[PHP] Forcer l'affichage des zéros inutiles

Fermé
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 - 8 mars 2006 à 16:49
 dub - 1 sept. 2011 à 19:01
Bonjour,

Je me trouve confronté à un problème en apparance tout bête mais auquel je ne trouve pas de solution.
Dans un script PHP je calcule un prix de manière automatique et l'arrondis à deux chiffres après la virgule. Or si le prix obtenu est par exemple de 15.50€, le script affichera 15.5€, ce qui ne me convient pas. Ainsi je souhaiterais connaître une manière "propre" et rapide pour forcer l'affichage des zéros inutiles après la virgule.

En faisant une recherche sur le net j'ai constaté que certaines personnes confrontées au même problème l'avaient résolu en utilisant la fonction number_format, mais je ne vois pas comment l'utiliser sachant que si le nombre de chiffres après la virgule est fixé à 2, le nombre de décimales lui peut varier.

Je vous remercie pour vos réponses éventuelles. :)
A voir également:

6 réponses

rdbois Messages postés 22 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 28 juillet 2008 7
28 juil. 2008 à 14:41
Je suis tombé sur ce sujet car je cherché exactement la même chose que son titre, et en y réfléchissant j'ai trouvé tout seul.

Donc, pour tous ceux qui tomberont là-dessus, voici une solution :

$prix = round($prix,2); // On arrondi le prix à 2 chiffres après la virgule

echo sprintf('%.2f',$prix); // On affiche le prix avec 2 chiffres après la virgule quoi qu'il arrive

6
number_format() c le mieux pr les 0 "innutiles"
5
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
8 mars 2006 à 17:27
Salut,

Avec sprintf, tu peux décider quel formatage utiliser et quel nombre de chiffres après la virgule tu veux. Pour les décimales apparemment si tu ne mets rien ya pas de soucis.
Par exemple:
echo sprintf('%.2f', 522.555); //Affichera 522.55

L'avantage aussi c'est que sprintf coupe les chiffres mais n'arrondit pas.
1
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
8 mars 2006 à 23:30
Merci pour cette réponse mais malheureusement je ne comprends pas du tout le principe de la fonction sprintf().

En effet prenons pour exemple le calcul suivant: 5.50/1.196, dont le résultat est 4,5986622...

Si j'utilise la fonction round($nombre,2), j'obtiens 4.6 (le résultat que j'attends étant 4.60).
Si j'utilise la fonction sprintf('%.2f',$nombre), j'obtiens 4.604 (je ne comprends pas pourquoi).
Si j'utilise la fonction sprintf('%.1f',$nombre), j'obtiens 4.63 (je ne comprends encore moins pourquoi).

Merci d'éclairer ma lanterne. :)
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
8 mars 2006 à 23:35
Bizzare, moi avec sprintf('%.2f',$nombre), j'ai bien 4.60

Tu pourrais me dire ta version de Php?
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
12 mars 2006 à 20:20
Désolé pour le retard dans ma réponse. :)

Ma version de PHP est la 4.3.10
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
12 mars 2006 à 21:10
Bon, je testerai bientôt avce cette version.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ça peux venir su fait que tes . se transforme en , ce qui à pour conséquence de fausser tout calculs

c'est juste une piste...

Je passai par là à la recherche d'une autre fonction proche mais à l'inverse ;-)

j'ai un calcul qui me donne pout 7.3 le résultat 7
sauf que moi je cherche à avoir le zéro avant lorsque le résultat est un chiffre unique
Bon si une piste poster ici mais n'oubliez pas que c'est pas le sujet principal du post ;-)
0
moi pour avoir les décimales mais pasles "zéro inutile j'ai fait ça :

echo str_replace(",00","",number_format($price, 2, ',', ' '))."€";
0