Ho un problema di arrotondamento all'interno di .Net..Net Arrotondamento numero
Sto arrotondando un numero di 3 cifre fino a due cifre e causa alcuni problemi con un numero.
Se tento di arrotondare 34.425 a due cifre decimali, arrotondarlo a 34.43. Sto usando l'opzione roundawayfromzero e ha funzionato per ogni numero nel programma, tranne per questo fino ad ora.
Il codice Math.Round(34.425, 2, MidpointRounding.AwayFromZero)
deve essere uguale a 34,43, tuttavia, è uguale a 34,42.
Se provo con un altro numero, funziona correttamente.
Math.Round(34.435, 2, MidpointRounding.AwayFromZero) = 34.44
Math.Round(34.225, 2, MidpointRounding.AwayFromZero) = 34.23
Math.Round(34.465, 2, MidpointRounding.AwayFromZero) = 34.47
Volevo solo verificare se qualcuno ha incontrato questo problema in precedenza?
Per ora ho risolto questo problema convertendo il numero in un decimale. Ho cambiato il codice per questo e funziona bene ora:
Math.Round(CDec(34.425), 2, MidpointRounding.AwayFromZero) = 34.43
io sono solo alla ricerca di una ragione sul perché il mio vecchio codice non ha funzionato.
Grazie!
Aggiornato il codice al punto AwayFromZero
+1 per suggerimento decimale –
Grazie per la risposta. Credo che la mia grande domanda sia: perché funziona per tutti gli altri valori? – Jeff
Anch'io dovrei essere d'accordo con te se fosse una variabile. Tuttavia, stavo mettendo questo valore nella watch list come 34.425. Quindi non dovrebbe essere rappresentato come 34.43499999 ... è corretto nella mia ipotesi? – Jeff