SQL Server 2005 числовая потеря точности

Отладка некоторого связанного с финансами кода SQL обнаружила странную проблему с математической точностью (24,8).

Запустив следующий запрос на вашем MSSQL, вы получите результат выражения A + B * C, равный 0.123457

SELECT A, B, C, A + B * C FROM ( SELECT CAST(0.12345678 AS NUMERIC(24,8)) AS A, CAST(0 AS NUMERIC(24,8)) AS B, CAST(500 AS NUMERIC(24,8)) AS C ) T

Итак, мы потеряли 2 значимых символа. Пытаясь исправить это по-разному, я понял, что преобразование промежуточного результата умножения (нуля!) В числовое (24,8) будет работать нормально.

И, наконец, есть решение. Но все же у меня возникает вопрос - почему MSSQL ведет себя таким образом и какие преобразования типов действительно произошли в моем образце?

Ответы на вопрос(3)

Ваш ответ на вопрос