Dim A, B, C as Double
A = 4.00
B = 3.93
C = B - A
Debug.Print (C.ToString)
-0,0699999999999998
![]()
![]()
![]()
Come riportare in maniera elegante C al corretto valore?
Dim A, B, C as Double
A = 4.00
B = 3.93
C = B - A
Debug.Print (C.ToString)
-0,0699999999999998
![]()
![]()
![]()
Come riportare in maniera elegante C al corretto valore?
C.ToString("0.00")
No MP tecnici (non rispondo nemmeno!), usa il forum.
Per "arrotondare" io uso:Originariamente inviato da oregon
C.ToString("0.00")
c' è qualche differenza sostanziale tra i due metodi?codice:System.Math.Round(C, 2)
Se scrivi
C = System.Math.Round(C, 2)
memorizzi il nuovo valore arrotondato in C
Nel caso che ti ho presentato il valore di C non viene modificato ma l'approssimazione avviene solamente per la visualizzazione.
Può servire sia usare il primo metodo sia il secondo.
No MP tecnici (non rispondo nemmeno!), usa il forum.
Capito! Grazie per la spiegazione.Originariamente inviato da oregon
Se scrivi
C = System.Math.Round(C, 2)
memorizzi il nuovo valore arrotondato in C
Nel caso che ti ho presentato il valore di C non viene modificato ma l'approssimazione avviene solamente per la visualizzazione.
Può servire sia usare il primo metodo sia il secondo.
Ciao
Vincenzo
Ty to all, e soprattutto a oregon: C.ToString("0.00") è proprio quello che mi serviva.![]()
In ogni caso, se questo genere di errori non sono tollerabili (tipicamente in applicazioni finanziarie) bisogna usare tipi in virgola fissa o numeri in virgola mobile in base 10; il .NET Framework ad esempio fornisce il tipo Decimal.
Amaro C++, il gusto pieno dell'undefined behavior.