Originariamente inviato da kuarl
i campi float e double sono campi approssimati, quindi il risultato che ti ritorna è infinitamente piccolo, quasi zero ma non proprio zero. Quello che stupisce però è che non dovrebbe partire con l'approssimazione per una operazione così semplice. Non è che prima fai altre operazioni? no perché addizioni e moltiplicazioni nei calcolatori non sono commutative proprio per problemi di overflow nei tipi esatti e perdita di precisione con i tipi a virgola mobile...
l'unica soluzione che posso suggerirti è di non fare mai confronti esatti, vale a dire non fare mai un operazione del genere:
$miaVarFloat1 == $miaVarFloat2
proprio per i problemi sopracitati. Ti conviene invece fare
$miaVarFloat1 - $miaVarFloat2 <= $tolleranza
la variabile tolleranza contiene un numero abbastanza piccolo da essere considerato tollerabile nel tuo programma.
che casino!!![]()
beh a me servirebbe la precisione in quanto sto simulando una sorta di credito sul cellulare. Quindi sottraggo i 0.2 centesimi del costo dell'sms tipo ai 0.8 di credito di residuo.
Non capisco, uff![]()
![]()