SQL Server 2005 numeryczna utrata precyzji

Debugowanie niektórych kodów SQL związanych z finansami znalazło dziwny problem z precyzją matematyki (24,8).

Uruchomienie następującej kwerendy na serwerze MSSQL spowoduje, że wynik wyrażenia A + B * C wyniesie 0,123457

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

Straciliśmy więc 2 znaczące symbole. Próbując to naprawić na różne sposoby, przekonałem się, że konwersja wyniku mnożenia pośredniego (który jest Zero!) Na numeryczny (24,8) działa dobrze.

I wreszcie rozwiązanie. Ale wciąż mam pytanie - dlaczego MSSQL zachowuje się w ten sposób i które konwersje typów rzeczywiście miały miejsce w mojej próbce?

questionAnswers(3)

yourAnswerToTheQuestion