SQL server奇怪的数学结果?

时间:2012-04-02 18:00:31

标签: sql-server sql-server-2008

我觉得我很生气

SELECT 30.0/(-2.0)/5.0;
SELECT 30.0/-2.0/5.0;

enter image description here

这里发生了什么?

修改

谁说x/(y)/z将是(x/y)/z而不是x(y/z)? -

2 个答案:

答案 0 :(得分:7)

SELECT 30.0/(-2.0)/5.0;非常明确:

SELECT 30.0/(-2.0)=-15.0
-15.0/5.0=-3.0

第二个选择被解释为:SELECT 30.0/-(2.0/5.0);

2.0/5.0=0.4
30.0/-0.4=-75.0

请参阅:Operator Precedence (Transact-SQL)

答案 1 :(得分:3)

您的第二个选择执行如下:

select 30.0/-(2.0/5.0)

看起来减号导致SQL Server反转最后一个分区 - 非常确定这是一个错误!