Il debug di un codice SQL relativo alle finanze ha trovato uno strano problema con la precisione matematica numerica (24,8).Perdita di precisione numerica del server SQL 2005
Eseguire la seguente query sul MSSQL si otterrebbe un + B risultato dell'espressione * C per essere 0,123457
SELEZIONE A, B, C, A + B * C DA ( SELEZIONA CAST (0.12345678 come numerico (24,8)) COME, CAST (0 come numerico (24,8)) AS B, CAST (500 come numerico (24,8)) AS C ) T
Così abbiamo perso 2 simboli significativi. Cercando di risolverlo in modi diversi, ho ottenuto che la conversione del risultato della moltiplicazione intermedia (che è zero!) In numerica (24,8) funzionasse correttamente.
E finalmente una soluzione. Ma ancora ho una domanda: perché MSSQL si comporta in questo modo e quali conversioni di tipo si sono verificate nel mio esempio?
intendevi NUMERICO (32,6)) ?? Se la somma deve essere 38 – Edmondo1984
@ Edmondo1984 Si prega di leggere i collegamenti e capire cosa significano entrambi i numeri. –
Si dice che moltiplicando due numeri (24,8) il server proverà a salvare 16 bit e produrrà un (32,6), come diventerà un 38,6?Grazie – Edmondo1984