这里是我运行SQL Server 2008中计算错误
Select (100/18)*18
查询答案我得到的是90.我试图声明的每一个号码为也小数,和我得到的值100.0008
,但是当我用变量作为浮点数计算答案在'100'是正确的,所以任何人都不知道SQL为什么会这样计算?
这里是我运行SQL Server 2008中计算错误
Select (100/18)*18
查询答案我得到的是90.我试图声明的每一个号码为也小数,和我得到的值100.0008
,但是当我用变量作为浮点数计算答案在'100'是正确的,所以任何人都不知道SQL为什么会这样计算?
,因为它首先evelute的paranthesis
所以
Select (100/18)*18
会(一十八分之一百)= 5.555555,但假设这两个数为INT所以它会施放结果为INT所以它会返回5
所以现在5*18 = 90
如果你想正确的结果做到这一点,而不是Select (100*18)/18
试图表达的numders交流十进制数
SELECT (100.0/18)*18
和
SELECT ROUND((100.0/18)*18,2)
...
,以获得期望的结果你应该尝试这样的事情:
Select CEILING((100/18.0)*18)
当你做到这一点
,
Select (100/18)*18
的SQL Server考虑操作整数除法,并采取选择十八分之百5 instaed 5.55555的....
[运算符优先级(HTTP ://msdn.microsoft.com/en-us/library/ms190276.aspx)永远不要以为RDBMS有bug。 – JeffO