sql数据类型舍入
我有以下问题sql数据类型舍入,sql,sql-server,Sql,Sql Server,我有以下问题 declare @a NUMERIC(20,4) set @a=24900*0.3333333333 select @a 我期待着8299.999999,但它给出了8300.00。有人能帮我吗?你可能想要这个或类似的东西: declare @a NUMERIC(20,6) set @a=cast(24900 as numeric(20,6))*cast(0.3333333333 as numeric(20,10)) select @a 您的结果是四舍五入的,因为您只有4位小数。
declare
@a NUMERIC(20,4)
set @a=24900*0.3333333333
select @a
我期待着
8299.999999
,但它给出了8300.00
。有人能帮我吗?你可能想要这个或类似的东西:
declare @a NUMERIC(20,6)
set @a=cast(24900 as numeric(20,6))*cast(0.3333333333 as numeric(20,10))
select @a
您的结果是四舍五入的,因为您只有4位小数。使用
set @a = round(24900*0.3333333333, 4, 1)
这不会舍入结果,而是截断结果
我不知道这是否是您想要的,因为像
0.12346
这样的值将被截断为0.1234
,而不是四舍五入为0.1235
这在这种特定情况下有效,但特定问题仍然可能发生。下面提出的ROUND
解决方案是更好的选择。Thx deepak和Andrew我同意只需截断而不进行舍入。