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


Mephit

Mephit logo
PHP project for D&D players www.mephit.it

Documentazione

Motori di ricerca

Utility

Categorie

Meta

Archivi