probleme d'addtion de prix en php

WRInaute passionné
Bonjour à tous,

J'ai encore un bug bizarre à vous soumettre :

Je réalise une opération très simple en php : une addition de 3 prix :

Code:
$total = $prix1 + $prix2 + $prix 3;

Mon problème c'est que quand j'affiche $total il me vire les centimes, il affiche par exemple 160,00€ alors qu'il devrait m'afficher 160,23€.

Le truc c que quand j'affiche les prix un par un il m'affiche les centimes correctement !!

Avez-vous une idée, une suggestion ?
Merci d'avance.
 
WRInaute discret
regardes le type de variable que tu utilise (entier, float, ...), sinon tu multiplies chaque élément par 100 puis tu divises le total par 100 :p
 
WRInaute impliqué
Salut,

Si le premier prix rencontré est un entier, le moteur fait peut-être une conversion implicite des autres nombres.
Il faudrait que tu forces le type de données.
 
WRInaute passionné
J'utilise dejà number_format avant pour forcer l'affichage de deux chiffres décimaux (après la virgule).

Comme j'expliquais dans mon premier post mes trois variables s'affichent correctement quand je fais des echo individuels. C'est lors de l'addition que ya oune betite problème.
 
WRInaute occasionnel
salut,
Code:
$total = $prix1 + $prix2 + $prix 3;
je sais pas si c'est ton vrais code mais si c'est la cas ya un espace $prix 3 donc c'est $prix3.
 
WRInaute discret
Je ne crois pas que tu regleras tu problème avec number_format mais peut être que je me trompe car je n'ai jamais rencontré ce problème...
Il est peut être possible que çà vienne de la configuration du php (php.ini)
 
WRInaute passionné
oui lol dsl faute de frappe, je vous mets mon vrai code :

Code:
$totalapayer = $totalprixcd1 + $totalprixcd2 + $totalprixphoto;

et quand je fais :
Code:
$totalapayer = $totalprixcd1;
Code:
$totalapayer = $totalprixcd2;
Code:
$totalapayer = $totalprixphoto;

Ca s'affiche correctement...
 
WRInaute occasionnel
et en mettant un "." en séparateur pour tes prix, ça ne fonctionne toujours pas?

je viens de tester ça et ça marche correctement :

Code:
<?php
$p1= 1.54;
$p2= 3.12;
$p3= 8.99;
echo $p1+$p2+$p3;  //affiche 13.65
?>

et pour :

Code:
$p1= "1,54";
$p2= "3,12";
$p3= "8,99";
echo $p1+$p2+$p3; //affiche 12
 
WRInaute impliqué
Code:
(float) $totalapayer = (float) $totalprixcd1 + (float) $totalprixcd2 + (float) $totalprixphoto;
Tu pourras ensuite mettre en forme le résultat comme tu le désires avec number_format
 
WRInaute occasionnel
dadovb a dit:
euh dites moi si je me gourre mai sles variables en php n'ont pas de type...

Tu fais cette confusion car la déclaration des variables en php est par défaut implicite. c'est à dire que tu n'es pas obligé de spécifier leur type, php le gère par défaut..en général. mais il peut être utile de spécifier le type, notamment pour une meilleure gestion de la mémoire.
 
WRInaute discret
hipopulation à raison l'erreur doit provenir des virgules. Je n'avais pas compris ton message dans ce sens la dans mon post précédent ;)
En fait la notation anglaise et différente de la française.
 
WRInaute impliqué
Personnellement je spécifie le type de mes variables lors de calcul. Mais PHP prend en compte automatiquement les types de variables. Cependant on peut modifier celle-ci dans certains cas ce qui est utile lorsque l'on veut utiliser une variable dans un foreach :

foreach( (array) $tableau as $key ) {
...
}

Ca évite de vérifier si $tableau est un tableau :)
 
WRInaute occasionnel
muelsaco a dit:
hipopulation à raison l'erreur doit provenir des virgules. Je n'avais pas compris ton message dans ce sens la dans mon post précédent ;)
En fait la notation anglaise et différente de la française.

et tu reformates en format français avec number_format....

de rien :wink:
 
Discussions similaires
Haut