SQL Server 2008计算错误

SQL Server 2008计算错误,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,这是我正在运行的查询 Select (100/18)*18 我得到的答案是90。我也尝试过将每个数字声明为小数,我得到的值是100.0008,但是当我使用变量作为浮点数进行计算时,答案在“100”处是正确的。那么有人知道SQL为什么会这样计算吗?,因为它首先会产生偏执 所以 will(100/18)=5.555555,但它假设两个数字都是int,因此它将结果转换为int,因此它将返回5 所以现在5*18=90 如果希望得到正确的结果,请改为选择(100*18)/18 select abs(18

这是我正在运行的查询

Select (100/18)*18

我得到的答案是90。我也尝试过将每个数字声明为小数,我得到的值是
100.0008
,但是当我使用变量作为浮点数进行计算时,答案在“100”处是正确的。那么有人知道SQL为什么会这样计算吗?

,因为它首先会产生偏执

所以

will(100/18)=5.555555,但它假设两个数字都是int,因此它将结果转换为int,因此它将返回5

所以现在
5*18=90

如果希望得到正确的结果,请改为选择(100*18)/18

select abs(18*100/18)

试着用十进制数来表示numders

SELECT (100.0/18)*18


要获得想要的结果,您应该尝试以下方法:

Select CEILING((100/18.0)*18)
当你这样做的时候

Select (100/18)*18

SQL Server将操作视为整数除法,选择SELECT 100/18为5×5×55555…p> 永远不要假设RDBMS有缺陷。虽然可能不需要ABS,但这是因为默认的优先级(M、D、a、S)。为什么投反对票?这里可能不需要abs,但当数据发生变化时。这是需要的。根据这个问题,答案是正确的

Select CEILING((100/18.0)*18)
Select (100/18)*18