La depuración de algún código SQL relacionado con las finanzas encontró un problema extraño con la precisión matemática numérica (24,8).SQL Server 2005 pérdida de precisión numérica
Ejecutar la siguiente consulta en su MSSQL se obtendría un resultado de la expresión * C + B para ser 0.123457
SELECT A, B, C, A + B * C DE ( SELECT CAST (0.12345678 como numérico (24,8)) AS A, CAST (0 como numérico (24,8)) AS B, CAST (500 AS NUMERIC (24,8)) AS C ) T
Así hemos perdido 2 símbolos significativos Tratando de arreglar esto de diferentes maneras, conseguí que la conversión del resultado de multiplicación intermedio (que es cero) a numérico (24,8) funcionara bien.
Y finalmente tenemos una solución. Pero aún tengo una pregunta: ¿por qué MSSQL se comporta de esta manera y qué tipo de conversiones ocurrieron realmente en mi muestra?
¿quisiste decir NUMERIC (32,6)) ?? Si la suma debe ser 38 – Edmondo1984
@ Edmondo1984 Lea los enlaces y comprenda lo que significan ambos números. –
Usted dice que al multiplicar dos números (24,8) el servidor intentará guardar 16 bits y producir un (32,6), ¿cómo se convierte en un 38,6?Gracias – Edmondo1984