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