Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql数据类型舍入_Sql_Sql Server - Fatal编程技术网

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我同意只需截断而不进行舍入。