SQL服务器奇怪的数学结果?

Roy*_*mir 2 sql-server sql-server-2008

我想我生气了

SELECT 30.0/(-2.0)/5.0;
SELECT 30.0/-2.0/5.0;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这里发生了什么?

编辑

谁说x/(y)/z会是(x/y)/z和不x(y/z)?-

KM.*_*KM. 7

SELECT 30.0/(-2.0)/5.0; 很清楚:

SELECT 30.0/(-2.0)=-15.0
-15.0/5.0=-3.0
Run Code Online (Sandbox Code Playgroud)

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

2.0/5.0=0.4
30.0/-0.4=-75.0
Run Code Online (Sandbox Code Playgroud)

请参阅:运算符优先级(Transact-SQL)

  • @Andomar - 它本来是一个错误(每个其他语言都有负数,优先级更高)但现在它是记录的行为,看起来不太可能会根据评论[在我链接的连接项目上]进行更改(https:// connect.microsoft.com/SQLServer/feedback/details/731531/mathematical-operation-order) (2认同)
  • @daniloquio说'你错了答案赢了50分.**哈,我正确地解释了为什么计算的值不如预期的那样.**我不同意`-`否定的记录优先级,但它就是它的本质. (2认同)