pb d'addition avec number_format

pb d'addition avec number_format - PHP - Programmation

Marsh Posté le 14-09-2004 à 11:28:00    

salut a tous  
G un pb avec avec une addition en utilisant la fonction number_format.
je vous explique :
 
 
il faut que j'additionne prix+livraison=total
voila ce qu'il se passe :
si prix =100,00
et que livraison=60,00
pas de probleme le total est bien egal a 160,00
 
mais si prix=200 000 000,00 (certes un peu cher!)
et que livraison=60,00
le total est alors egal a 200
 
OU
 
si prix=18 000,00  
et que livraison=1 500,00
le total est alors egal a 19
 
et il affiche bien 19 et non pas 19.00
et il ne calcule que le dernier millieme
voila voila ...
 
[]code]
//affichage du prix /quantité
echo 'prix :'.number_format($article['prix']*$quantite,2, ',', ' ').'€<br>';
 
//affichage du prix de la livraison
echo 'prix livraison:'.number_format($livraison, 2, ',', ' ').'€<br>';
 
//total (prix total etant le produit de quantité et de prix)
$_SESSION['prix_general']=number_format($livraison+$_SESSION['prix_total'], 2, ',', ' ');
 
echo echo 'prix livraison:'.number_format($HTTP_SESSION_VARS['prix_general']).'€';
 
 [/code]
 
 
merci de votre aide


Message édité par attentio le 24-03-2005 à 21:15:55

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
Reply

Marsh Posté le 14-09-2004 à 11:28:00   

Reply

Marsh Posté le 14-09-2004 à 17:16:50    

Normal, les chaînes et les virgules ( pour la partie décimale ) sont assez mal digérés dans le monde numérique de PHP... il s'arrête donc dès qu'il rencontre l'un d'eux.
 
Solution :
 
$prix = float(ereg_replace(",", ".", ereg_replace(" ", "", $prix)));
$livraison = float(ereg_replace(",", ".", ereg_replace(" ", "", $livraison)));
$total = strval($prix + $livraison);
 
Tu peux même le faire en une seule ligne :D  
$total = strval(float(ereg_replace(",", ".", ereg_replace(" ", "", $prix))) + float(ereg_replace(",", ".", ereg_replace(" ", "", $livraison))));

Reply

Marsh Posté le 15-09-2004 à 09:26:40    

Il faut toujours garder la valeur numérique de tes prix et n'utiliser la fonction number_format que pour l'affichage.
 
Ces lignes là :

Code :
  1. //total (prix total etant le produit de quantité et de prix)
  2. $_SESSION['prix_general']=number_format($livraison+$_SESSION['prix_total'], 2, ',', ' ');
  3. echo echo 'prix livraison:'.number_format($HTTP_SESSION_VARS['prix_general']).'€';


 
deviennent donc  

Code :
  1. //total (prix total etant le produit de quantité et de prix)
  2. $_SESSION['prix_general']=$livraison+$_SESSION['prix_total'];
  3. echo 'prix general : '.number_format($_SESSION['prix_general'], 2, ',', ' ').'€';

Reply

Sujets relatifs:

Leave a Replay

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