Page 1 sur 1
probleme avec les variables float
Posté : 05 juin 2012, 11:59
par raiden7
Bonjour tout le monde, j'ai un grand grand probleme que j'arrive pas a résoudre ni a comprendre l'origine, voila je je procede au calcule des taux comme $x=(54400/70000)*100 , je passe le resultat avec numeber_format($x, 2, ',' , ' '), je l'enregistre sur une table mysql dont le champ est de type Float mais l'orsque j'extrait le resultat j'ai un $y=77.7699966430664 alors que meme avec une calculatrice (54400/70000)*100=77.7714....
alors pourquoi le resultat change????!!!!!!!!!
Re: probleme avec les variables float
Posté : 05 juin 2012, 13:52
par Ryle
Les types float et double qui permettent de gérer des nombres décimaux, impliquent une notion de précisions des valeurs qu'ils traitent. Lorsque tu veux stocker un nombre réel dans un champ comprenant un nombre limité de chiffres, il est nécessaire pour le système de calculer une approximation de la valeur d'origine.
Tu peux donc te retrouver avec un écart entre le nombre d'origine et la valeur stockée ; écart plus ou moins proche de la décimale selon la précision gérée.
Re: probleme avec les variables float
Posté : 05 juin 2012, 14:06
par raiden7
merci pour votre explication, mais comment eviter cela??
Re: probleme avec les variables float
Posté : 05 juin 2012, 14:54
par Mazarini
Ce n'est pas possible. C'est le passage du mode décimale au mode binaire qui veux ca.
Tu remarqueras qu'avec 2 décimales, tu gardes le même résultat.
Eventuellement, tu peux travailler en centime pour échapper au problème.
Re: probleme avec les variables float
Posté : 05 juin 2012, 16:47
par sirakawa
en utilisant le type decimal de Mysql
Re: probleme avec les variables float
Posté : 05 juin 2012, 17:43
par raiden7
merci pour le conseil l'ami