additionner des décimales...

tomtom-over76
Invité n'ayant pas de compte PHPfrance

19 mai 2009, 15:40

Bonjour,
je souhaite faire une addition toute simple mais je suis confronté à un probleme de débutant.
lorsque j'additionne mes variables mon résultat ne prend pas en compte les décimales
$a='0,00';
$b='7,75';
$c='2,2';
echo $total=$a+$b+$c;
si je remplace les virgules par des points ça fonctionne... mais je souhaite afficher des virgules

Merci

ViPHP
ViPHP | 1136 Messages

19 mai 2009, 16:40

Salut ,

j'ai envie de te dire , passe tes variables à la moulinette pour remplacer les "," possible avant de faire tes opérations ...

C'est tout ce que j'ai à te proposer pour le moment .. :?

Il doit y avoir de jouer avec setlocale() , mais celà peut engendrer d'autres changements ... donc ...

Ch.

ViPHP
ViPHP | 2291 Messages

19 mai 2009, 17:10

Salut,

Comme ceci peut-être :?: :wink:
<?php
$a= 0.00 ;
$b= 7.75 ;
$c= 2.2 ;
//echo $total=$a+$b+$c;



$numero = $a + $b + $c;
$aff_numero = number_format($numero, 2, ',', '');
echo $aff_numero;
?>
Résultat = 9,95
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 mai 2009, 12:17

Je confirme la proposition de dunbar et pour essayer de détailler un peu plus les raisons du pourquoi :

Lorsque tu veux faire des calculs, il faut utiliser des nombres, et non pas des chaines (tout le monde sait pourtant qu'on ne peut pas aditionner des choux et des carottes.. sauf dans un pot-au-feu, mais ca c'est une autre histoire :)). Et le séparateur de décimales quand on manipule des nombres en php, c'est le point.

Qu'ensuite, à l'affichage tu préfères présenter des virgules est une autre chose, et effectivement, la fonction number_format() te permet de formatter un nombre pour l'affichage avec séparateur de milliers, de décimales, nombre de chiffre après la virgule...

Tu pourras ainsi faire tous tes calculs sans le moindre problème et présenter cependant des valeurs formater (des chaines donc) à l'utilisateur :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...