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

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

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

ВЫБЕРИТЕ A, B, C, A + B * C ОТ (ВЫБЕРИТЕ CAST (0.12345678, КАК ЧИСЛО (24,8)), КАК A, CAST (0, КАК ЧИСЛО (24,8)), AS B, CAST (500 КАК ЧИСЛО (24 , 8)) AS C) T

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

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

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

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