SQL Server 2008计算错误

时间:2012-10-30 12:37:37

标签: sql sql-server sql-server-2008

这是我正在运行的查询

Select (100/18)*18

我得到的答案是90.我已经尝试将每个数字声明为小数,并且我得到值100.0008,但是当我使用变量作为浮点数计算时,答案在'100'时是正确的,所以有没有人知道为什么SQL计算这样?

4 个答案:

答案 0 :(得分:7)

因为它会首先影响paranthesis

所以

Select (100/18)*18

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

所以现在5*18 = 90

如果您想要正确的结果,请改为Select (100*18)/18

答案 1 :(得分:2)

要获得所需的结果,您应该尝试这样的事情:

Select CEILING((100/18.0)*18)

当你这样做时,

Select (100/18)*18

sql server将操作视为整数除法,并选择100/18作为5.55555的5个实例....

答案 2 :(得分:1)

尝试将数字表示为十进制数

SELECT (100.0/18)*18

SELECT ROUND((100.0/18)*18,2)

...

答案 3 :(得分:0)

你可以试试这个

select abs(18*100/18)