Javascript ne sait pas compter

Résolu
chino18 Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 1 avril 2011 - 7 janv. 2010 à 16:49
eomer212 Messages postés 13 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 8 février 2011 - 7 janv. 2010 à 18:19
Bonjour à tous.

Je plante depuis des heures sur un problème de soustraction!!

Par exemple,

978.35 - 931.8 = 46.55000000000007 !!!

Quelqu'un a-t-il déjà rencontré le même problème?
Parce que là j'y comprend rien?!


-- message approuvé par Jean-Claude Van Damme --

1 réponse

eomer212 Messages postés 13 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 8 février 2011
7 janv. 2010 à 18:19
ca tient simplement au stockage des variables.
la place memoire est limitée (arf..) et les variables float sont stockées sous formes d'exposants..
donc quand on rétablit, ca provoque quelques petites variations infinitesimales... :)
dans ton cas, je penses que tu voulais traiter une soustraction monétaire.. perturbant, n'est-ce pas.??
tu peux eliminer le probleme, de deux facons, (voir plus.)
soit, tu multiplie toutes tes valeurs à traiter par 10 avant calcul et tu ne traite plus que des entiers, n'oublie pas de faire un cast ) et tu divise par 100 à la sortie..
soit, à la sortie, tu fait un arrondi à deux decimales au plus proche.
mais quand tu dois traiter de l'argent en informatique, il faut toujours bien regarder avec et dans quoi on les stocke avant de les manipuler..
jean claude te dirait la meme chose s'il arretait de planer..
3
Rejoignez-nous