Bonjour,

Je tente d'effectuer le calcul suivant en JavaScript : 1459 photocopies à 0.095$ chacune. Le calcul avec 'calc' de Windows donne :

En arondissant, on obtient 138.61$. C'est le montant que je recherche.

J'effectue donc la fonction suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Math.round((1459*0.095)*100)/100;
Le résultat donne : 138.6. À 2 décimales, ca donne donc 138.60 ??? En poussant un peu plus loin, j'effectue la fonction suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
javascript:alert(((1459*0.095)*100));  //j'ai enlevé le divisé par 100 pour voir le résultat intermédiaire
Le résultat donne : 13860.499999999998 ???

Si on effectue le divisé par 100 à cette valeur, on obtient 138.60[4], arrondi cela donne donc toujours : 138.60.

Pour le même calcul (1459*0.095)*100, 'calc' de Windows donne : 13860.5, ce qui est toujours exact.

Êtes-vous capable d'expliquer ce comportement ? Encore mieux, pouvez-vous améliorer la formule pour corriger ce problème et obtenir la bonne valeur en JavaScript ?

NOTE : Le calcul suivant donne le même type d'erreur. Vous pourrez tester votre nouveau code avec ce cas également : 371 photocopies à 0.095$ devrait donner 35.25$ et non 35.24$.

Merci !

Patric Côté
Québec / CANADA