23 个解决方案
#1
四舍五入用系统函数 Round()
例:
declare @n numeric(8,3)
set @n = 123.456
print Round(@n,2)
set @n = 654.321
print Round(@n,2)
例:
declare @n numeric(8,3)
set @n = 123.456
print Round(@n,2)
set @n = 654.321
print Round(@n,2)
#2
在sql2005中numeric截取位数时 是自动舍入的!!
如楼上例!
如楼上例!
declare @n numeric(8,2)
set @n = 123.456
print Round(@n,2)
set @n = 654.321
print @n
------------
123.46
654.32
#3
用Round()函数。。
#4
round or str()
#5
declare @n numeric(8,2)
declare @m numeric(8,2)
set @m= 123.456
set @n = 654.321
print @n
print @m
------
654.32
123.46
#6
用cast(col as decimal(18,2))
--用convert/cast转换就行了,数据类型的函数比较多
--用convert/cast转换就行了,数据类型的函数比较多
#7
round()
#8
我在sql表中用money数据类型的时候,设定小数位为三位,如果超过三位,会四舍五入,如果我用numeric,也设置小数位为三位,却不会会四舍五入,有什么办法吗?
-------------------------
怎么可能!四舍五入都不会,decimal还能称为精确数?
-------------------------
怎么可能!四舍五入都不会,decimal还能称为精确数?
declare @1 decimal(10,3),@2 decimal(10,3)
set @1=1.33333333
set @2=1.33350001
select @1,@2
/*
1.333 1.334
*/
#9
哦!谢谢大家,四舍五入我当然会,我的疑问是,我直接在表中录入数据,如果是money数据类型,是会自动四舍五入的,如果是numeric数据类型,却不会.如何做到跟monery类型一样的效果.因为我不想用查询的方式实现.
#10
直接在表中录入数据?
怎么录入,在企业管理器中?
怎么录入,在企业管理器中?
#11
楼上的都肯定了numeric类型也是自动舍入的,那就是自动的。
#12
建表或创建字段时就把数据类型设为numeric(18, 3)
#13
用了yimi_love,的方法不行,也是自己截断.在表中不会四舍五入.
#14
set numeric_roundabort off
#15
yimi_love的方法和free1879的方法结合就可以了
#16
不行呀!!大家有试过吗?
#17
是这样子的,我有一个入库单明细表,要用到一上数量的字段(numeric(18, 3)),在客户端中输入数据后,我希望在表中保存的数字保留四舍五入的3位小数,但是在表中虽然保存的是有三位小数,但不会四舍五入,只是截断了.
#18
但是如果用money数据类型,就可以得到我要求的正确的结果.但不知为什么numeric不可以呢?
#19
declare @i numeric(18,5)
set @i=15.87654
select cast(@i as numeric(18,3))
--------------------
15.877
(所影响的行数为 1 行)
set @i=15.87654
select cast(@i as numeric(18,3))
--------------------
15.877
(所影响的行数为 1 行)
#20
我是想保存在数据库表里就自动四舍五入.
#21
四舍五入用系统函数 Round()
#22
可能是你那的问题,
不用money的话
就在前台处理
不用money的话
就在前台处理
#23
round()函数呀,看自带帮助吧,很全的。
#1
四舍五入用系统函数 Round()
例:
declare @n numeric(8,3)
set @n = 123.456
print Round(@n,2)
set @n = 654.321
print Round(@n,2)
例:
declare @n numeric(8,3)
set @n = 123.456
print Round(@n,2)
set @n = 654.321
print Round(@n,2)
#2
在sql2005中numeric截取位数时 是自动舍入的!!
如楼上例!
如楼上例!
declare @n numeric(8,2)
set @n = 123.456
print Round(@n,2)
set @n = 654.321
print @n
------------
123.46
654.32
#3
用Round()函数。。
#4
round or str()
#5
declare @n numeric(8,2)
declare @m numeric(8,2)
set @m= 123.456
set @n = 654.321
print @n
print @m
------
654.32
123.46
#6
用cast(col as decimal(18,2))
--用convert/cast转换就行了,数据类型的函数比较多
--用convert/cast转换就行了,数据类型的函数比较多
#7
round()
#8
我在sql表中用money数据类型的时候,设定小数位为三位,如果超过三位,会四舍五入,如果我用numeric,也设置小数位为三位,却不会会四舍五入,有什么办法吗?
-------------------------
怎么可能!四舍五入都不会,decimal还能称为精确数?
-------------------------
怎么可能!四舍五入都不会,decimal还能称为精确数?
declare @1 decimal(10,3),@2 decimal(10,3)
set @1=1.33333333
set @2=1.33350001
select @1,@2
/*
1.333 1.334
*/
#9
哦!谢谢大家,四舍五入我当然会,我的疑问是,我直接在表中录入数据,如果是money数据类型,是会自动四舍五入的,如果是numeric数据类型,却不会.如何做到跟monery类型一样的效果.因为我不想用查询的方式实现.
#10
直接在表中录入数据?
怎么录入,在企业管理器中?
怎么录入,在企业管理器中?
#11
楼上的都肯定了numeric类型也是自动舍入的,那就是自动的。
#12
建表或创建字段时就把数据类型设为numeric(18, 3)
#13
用了yimi_love,的方法不行,也是自己截断.在表中不会四舍五入.
#14
set numeric_roundabort off
#15
yimi_love的方法和free1879的方法结合就可以了
#16
不行呀!!大家有试过吗?
#17
是这样子的,我有一个入库单明细表,要用到一上数量的字段(numeric(18, 3)),在客户端中输入数据后,我希望在表中保存的数字保留四舍五入的3位小数,但是在表中虽然保存的是有三位小数,但不会四舍五入,只是截断了.
#18
但是如果用money数据类型,就可以得到我要求的正确的结果.但不知为什么numeric不可以呢?
#19
declare @i numeric(18,5)
set @i=15.87654
select cast(@i as numeric(18,3))
--------------------
15.877
(所影响的行数为 1 行)
set @i=15.87654
select cast(@i as numeric(18,3))
--------------------
15.877
(所影响的行数为 1 行)
#20
我是想保存在数据库表里就自动四舍五入.
#21
四舍五入用系统函数 Round()
#22
可能是你那的问题,
不用money的话
就在前台处理
不用money的话
就在前台处理
#23
round()函数呀,看自带帮助吧,很全的。