Различные результаты от одинаковых запросов T- SQL - PullRequest
1 голос
/ 07 февраля 2020

Два запроса t- SQL (MS SQL 2017):

Select 125. /  -124/ 125.
Select 125. / (-124)/125.

Разница только в скобках.

Но результаты не равны:

-126.0080645161
-0.0080645120

Почему результаты разные?

Ответы [ 2 ]

4 голосов
/ 07 февраля 2020

Добавление круглых скобок во втором случае меняет порядок операций. Чтобы избежать двусмысленности, вы должны явно указывать скобки. Для первого результата вы должны использовать:

SELECT 125. / (-124 / 125.)

, а для второго случая:

SELECT (125. / -124) / 125.
3 голосов
/ 07 февраля 2020

Объяснение состоит в том, что в T- SQL операторы * (Multiplication) и / (Division) имеют более высокий приоритет , чем оператор - (Negative). Итак, что именно оценивается, это:

Expession 1: 125. / - (124 / 125), равно: -126.0080645161

Expession 2: 125. / (-124) / 125, равно: -0.0080645120

Обратите внимание, что правильный результат: -0.0080645120.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...