[Problème] d'addition en php[Résolu]

d'addition en php[Résolu] [Problème] - PHP - Programmation

Marsh Posté le 27-11-2008 à 11:34:19    

Hello all ,  
 
C'est la première foi que je poste sur un forum à cause d'un problème en développement  
J'ai toujours pu trouver sur la toile des réponses a mes questions .
 
Mais la j'ai un problème vraiment étrange sur un simple additions,  enfin simple pas tant que ça mais dans le fond oui  :??:  
 
Dans mon programme je fait une requête qui me récupère entre 10k et 100k de résultat
 
Dans une boucle ou je stock mes résultats dans un fichier j'additionne une valeur pour qu'a la fin de la boucle j'ai un total de cette même valeur  
 
(Exemple) table avec x champ donc un champ est : prix HT , je veux additionné ses prix pour avoir le total  
 
Et la c'est le drame  :pfff:  
 
Tous ce passe bien pour 80% de mes calculs et j'ai 20% ou le résultat est une aberration
 
voici une des xK lignes d'un echo de debug  
 
6.11+-6.43 = -0.32 ( Jusqu'ici tout va bien)
et au bout de x ligne comme celle la ou tous ce passe bien j'ai une ligne :  
6.11+-6.11  = -1.7763568394E-15 alors que le résultat devrai être égal a 0
le délire continu  
-1.7763568394E-15+6.43 = 6.43 (ici on vois bien que -1.7763568394E-15  + x = x  comme si -1.7763568394E-15 = 0)
 6.43+-6.43 = -1.7763568394E-15
 
je ne comprends plus rien  
 
information supplémentaire :  
system : php5 + debian  
sgbd : oracle  
 
Après un var_dump(de ma variable)  je vois un string.
Je force mes variables avec (float) même résultat.
 
petit bout de code  
ma boucle for  
.
.
.

Code :
  1. //récupere la valeur de la bdd
  2. $dlimtht = $tab_res2[$j]['DLIMTHT'];
  3. //somme des valeurs
  4. $dlimithtall = $dlimithtall+$dlimth


.
.
.
fin de ma boucle for  
 
 
j'espère avoir été assez clair dans mon explication .
need help  :cry:


Message édité par romain_92 le 27-11-2008 à 12:24:22
Reply

Marsh Posté le 27-11-2008 à 11:34:19   

Reply

Marsh Posté le 27-11-2008 à 11:37:51    

Bienvenue dans le petit monde des opérations sur les floats...t'as jamais étudié la représentation des flottants en binaire?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 27-11-2008 à 11:39:03    

http://forum.hardware.fr/hfr/Progr [...] 3398_1.htm


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 27-11-2008 à 11:43:29    

L'éternel problème des floats !
C'est un problème de codage des nombres réels.
 
Jette un coup d'oeil ici : http://fr2.php.net/float
 
edit: [:benou_grilled]


Message édité par kao98 le 27-11-2008 à 11:43:54

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 27-11-2008 à 11:43:30    

http://docs.sun.com/source/806-3568/ncg_goldberg.html
 
houba houba hop :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 27-11-2008 à 12:18:39    

Très intéressant vos liens et j'ai résolut mon problème grâce à l'extension PHP bcmath
 
merci all :)
 
code  
 

Code :
  1. $dlimithtall = bcadd($dlimithtall,$dlimtht,2);


Message édité par romain_92 le 27-11-2008 à 12:20:29
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed