Archive for Febbraio 2009
Float Precision, risolvere il problema dei decimali in JavaScript
Facendo operaizoni coi decimali in JavaScript vi sarà capitato di imbattervi in alcuni risultati “strani”… Ad esempio:
0.99999 + 0.000001 = 0.9999910000000001
0.05 * 0.35 = 0.017499999999999998
Questo strano comportamento è colpa dello Standard IEEE 754 implementato in moltissimi linguaggi e che regola il comportamento dei numeri decimali.
Ora, non so per voi ma per me è inconcepibile fare con un PC delle operazioni matematiche ed ottenere risultati errati… per cui mi sono messo a caccia di una libreria che risolvesse tale problema. Ho trovato BigNumber, che al prezzo di un po’ di scomodità (ma neanche tanta) promette risultati perfetti:
new BigNumber(0.99999).add(0.000001) = 0.999991
new BigNumber(0.05).multiply(0.35) = 0.0175
Alleluia.
Quando la finiremo di implementare librerie per riparare agli errori degli altri??
8 comments 4 Febbraio 2009
