Page 1 sur 1

comment dire a PHP de s'arreter 2 chiffres aprés la virgule

Posté : 08 juin 2005, 16:25
par Pasti$
j'effectue une moyenne avec php pr effectuer ensuite un pourcentage et le probleme c'est qu'il me donne minimum 7 chiffres aprés la virgules et je voudrais que php ne garde que les 2 premiers chiffres aprés la virgule ou bien sinon faire un arrondi (c'est ce que je préférerais) :)

comment faire ?

MERCI

Posté : 08 juin 2005, 16:51
par hebus
Il y a pleins de fonctions pour cela comme floor, ceil ou bien round.

Il y a aussi number_format.

Bref, ya de quoi s'en sortir à moindre frais.

Posté : 08 juin 2005, 16:53
par zeus
si c'est un problème d'affichage, je te conseille d'utiliser sprintf()
sprintf("moyenne : %.2f", $moyenne);
si c'est un problème d'enregistrement, pas mieux que round()

Posté : 08 juin 2005, 16:54
par Pasti$
Merci :)

Posté : 08 juin 2005, 17:25
par Pasti$
Je n'arrive pas a afficher la valeur au dessus dites moi mon erreur je ne la trouve pas
ceil($total)=($total_questionnaire/$max)*100;

Posté : 08 juin 2005, 17:43
par DocType
Je n'arrive pas a afficher la valeur au dessus dites moi mon erreur je ne la trouve pas
ceil($total)=($total_questionnaire/$max)*100;
deja faut que tes variables existent...
rappel des variables utilisées:
$total
$total_questionnaire
$max

Ensuite pour calculer et afficher le résultat:
$calcul_fini = round( (($total_questionnaire/$max)*100) , 2);
echo $calcul_fini;
Envisage le remplacement de la fonction round par ceil si tu le souhaite...

Ton erreur:
pseudo-code de ton code "ma fonction ceil sera le pourcentage"...Pourquoi définir une fonction de php ???
faut plutot dire "ma variable sera le ceil du pourcentage"

+ d'infos: http://www.nexen.net/docs/php/annotee/function.ceil.php

Enjoy !

Posté : 08 juin 2005, 17:49
par hebus
$total = number_format ( ( ( $total_questionnaire / $max ) * 100 ) , 2 )  ;
Et avec number_format ????

Posté : 08 juin 2005, 17:55
par Pasti$
C'est du tout bon
merci a vous
et bon courage pr la suite

Posté : 08 juin 2005, 18:01
par DocType
$total = number_format ( ( ( $total_questionnaire / $max ) * 100 ) , 2 )  ;
Et avec number_format ????
peut-être fonction trop poussée pour sa demande?
sachant que le nombre au maximum est de 100, le formatage n'a donc aucun intérêt...
En tout cas très bonne idée...mais pour des scripts plus evolués :wink:

Enjoy !

Posté : 08 juin 2005, 18:03
par Cyrano
BIen sur que ça fonctionne avec number_format: essayez ceci:
<?php
$total_questionnaire = 6543.7845;
$max = 12.458;
$total = number_format((($total_questionnaire / $max )*100), 2, ',', ' ')  ;
echo($total);
Note: le formattage proposé est le système français, donc un espace par tranche de trois chiffres et les décimales après une virgule, ici 2 chiffres.

Posté : 08 juin 2005, 18:07
par DocType
BIen sur que ça fonctionne avec number_format: essayez ceci:
<?php
$total_questionnaire = 6543.7845;
$max = 12.458;
$total = number_format((($total_questionnaire / $max )*100), 2, ',', ' ')  ;
echo($total);
Note: le formattage proposé est le système français, donc un espace par tranche de trois chiffres et les décimales après une virgule, ici 2 chiffres.
yep, mais dans son cas pas besoin extrême d'avoir cette fonction sachant que c un pourcentage (nombre maxi = 100) donc un round suffit amplement :wink:

Posté : 08 juin 2005, 18:13
par Cyrano
à une différence près: si tu tombes sur un entier, round n'ajoutera pas ",00" tandis que number_format si.

Posté : 08 juin 2005, 18:24
par DocType
à une différence près: si tu tombes sur un entier, round n'ajoutera pas ",00" tandis que number_format si.
yep, mais dans son cas est-ce vraiment utile? :lol:
J'utilise également format_number dans mes scripts mais pour son utilisation...(car dans son premier code il avait mis la fonction ceil() qui arrondit à l'entier supérieur...ce qui prouve qu'il ne cherchait dès lors pas la précision ! :roll: ).
:wink:

Enjoy !

Posté : 09 juin 2005, 09:16
par Pasti$
ne vous inquietez pas les calculs me vont amplement la fonction round() me suffit.
en tout cas merci a vous de m'avoir aider, c'est sympa