Vous n'êtes pas connecté - 0 membre connecté
Catégories
Graphisme
Flash (51)
Print (66)
Programmation
PHP (66)
ASP (2)
CSS (26)
Hardware
PC (34)
Mac (14)
Linux (5)
Divers
Blabla (261)
933 Sujets
12337 Réponses
Programmation > PHP > Fonction number_format
Fonction number_format
 J'ai un petit soucis avec la fonction number_format qui arrondi malgré moi les nombres à sa bonne convenance.

Exemple avec :


$nombre = -1.05334

number_format ($nombre, 1, ',', ' ')

// Ici $nombre devient -1,1 alors qu'il devrait devenir -1,0 ou -1 ...
Pourquoi ?
Posté le 14 04 2007 à 19h37
aguenard - Membre

Réponses - Fonction number_format
ceil(), float() pour arrondir... je ne sais pas pkoi sa arrondi pas dans le bon sens, number_format c'est pas l'idéal pour ton truc je pense.

Bon courage
Posté le 14 04 2007 à 20h22
psykoyo - Membre
Bon j'espère de tout coeur que quelqu'un trouvera solution à mon problème.
En attendant je vais faire un truc compliqué de substitution avec un EXPLODE et STR_REPLACE.

Merci.
Posté le 15 04 2007 à 11h50
aguenard - Membre
on arrive au résultat comme sa mais sa deconne sévère (il ne faut pas l'utiliser)
$nombre = "-1,05334";
$test = number_format ($nombre, 1, ',',' ');
// sa donne -1,0
echo $test;

http://php.net/numbe r_format
Peut être une piste avec ce commentaire car ton soucis vient de 05 je sèche et je pense que c'est impossible, sa arrondi au supérieur

// le commentaire
Just an observation:
The number_format rounds the value of the variable.

$val1 = 1.233;
$val2 = 1.235;
$val3 = 1.237;

echo number_format($val1,2,",",".") ; // returns: 1,23
echo number_format($val2,2,",",".") ; // returns: 1,24
echo number_format($val3,2,",",".") ; // returns: 1,24
Posté le 15 04 2007 à 20h11
psykoyo - Membre
 Comme le dit psykoyo, number_format arrondit le nombre à n décimales (le con), n étant le deuxième paramètre de la fonction donc c'est normal que t'obtiennes -1,1.

L'arrondi se fait à la décimal au dessus si la "centimale" est > =5, et au-dessous si <=4.
Donc c'est tout à fait normal d'avoir -1,05 arrondi à -1.1.

Si tu veux -1 ou -1,0, tu peux en effet faire un ceil ou floor suivant si tu veux l'arrondi respectivement au-dessus ou au-dessous. Tu peux aussi faire une conversion à la volée (équivaut à utiliser ceil()):
number_format((int)$taVariable, 1, ',', ' '); //(int)-1.05 = -1
Posté le 15 04 2007 à 21h23
McFly - Membre - www
Ça ne vous a pas traversé l'esprit de mettre "0" pour l'argument "décimales" ?

Quant à l'arrondi, il est mathématiquement tout à fait correct.
Posté le 16 04 2007 à 20h23
symzo - Membre - www
0 pour l'argument décimale empêche de faire un format genre 1,x ... non ?
Posté le 17 04 2007 à 21h47
psykoyo - Membre
 Ca te donne bien un entier mais t'auras toujours un "problème" d'arrondi:
$int_var = 1.9;
print number_format($int_var, 0, ',', ' ');//2
$int_var = 1.4;
print number_format($int_var, 0, ',', ' ');//1
hu!
Posté le 18 04 2007 à 14h16
McFly - Membre - www
Sujets PHP
<< 1 2 ... 5 6 7 >>
Blog en PHP
Auteur : Hymedia
Posté le 12 10 2006 à 11h34
6 Réponses (Nouveau sujet)
Sujet visité 752 fois
Directive apache
Auteur : mob
Posté le 25 09 2006 à 14h34
4 Réponses (Nouveau sujet)
Sujet visité 826 fois
Recherche CMS
Auteur : Narno
Posté le 25 09 2006 à 15h06
11 Réponses (Nouveau sujet)
Sujet visité 845 fois
Print screen (...)
Auteur : caniche
Posté le 15 09 2006 à 09h32
15 Réponses (Nouveau sujet)
Sujet visité 941 fois
hybridation listbox
Auteur : veensez
Posté le 15 09 2006 à 11h06
11 Réponses (Nouveau sujet)
Sujet visité 727 fois
[Résolu en (...)
Auteur : Narno
Posté le 25 07 2006 à 17h34
9 Réponses (Nouveau sujet)
Sujet visité 815 fois
Excel > MySql
Auteur : askhanir
Posté le 01 09 2006 à 13h36
7 Réponses (Nouveau sujet)
Sujet visité 901 fois
Remplacement texte (...)
Auteur : Tibooo
Posté le 27 08 2006 à 17h13
8 Réponses (Nouveau sujet)
Sujet visité 754 fois
Url Rewriting
Auteur : Dnepr
Posté le 26 07 2006 à 17h15
10 Réponses (Nouveau sujet)
Sujet visité 770 fois
[RESOLU] xml with xsl
Auteur : Pierrot
Posté le 18 08 2006 à 17h11
2 Réponses (Nouveau sujet)
Sujet visité 782 fois
<< 1 2 ... 5 6 7 >>
Mentions légales   -   Crédits   -   Nous contacter   -   © Benzor 2006