Vous n'êtes pas connecté - 1 Membre connecté
Catégories
Graphisme
Flash (49)
Print (65)
Programmation
PHP (64)
ASP (2)
CSS (25)
Hardware
PC (34)
Mac (14)
Linux (5)
Divers
Blabla (249)
904 Sujets
12075 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 3 4 5 6 7 >>
Traitement fichier (...)
Auteur : aguenard
Posté le 04 06 2007 à 15h05
2 Réponses (Nouveau sujet)
Sujet visité 828 fois
Fonction de (...)
Auteur : aguenard
Posté le 31 05 2007 à 14h13
5 Réponses (Nouveau sujet)
Sujet visité 1330 fois
Récupérer état dans (...)
Auteur : aguenard
Posté le 11 05 2007 à 10h38
16 Réponses (Nouveau sujet)
Sujet visité 1607 fois
Fonction (...)
Auteur : aguenard
Posté le 14 04 2007 à 19h37
7 Réponses (Nouveau sujet)
Sujet visité 2215 fois
Regexp : Ereg serait (...)
Auteur : Phoenix
Posté le 14 03 2007 à 19h08
5 Réponses (Nouveau sujet)
Sujet visité 1003 fois
Date II, the revenge
Auteur : tyler
Posté le 12 02 2007 à 15h54
15 Réponses (Nouveau sujet)
Sujet visité 1062 fois
Proposition de stage
Auteur : bob
Posté le 14 02 2007 à 17h30
1 Réponse (Nouveau sujet)
Sujet visité 685 fois

Sujet bloqué
Inverse de (...)
Auteur : tyler
Posté le 09 02 2007 à 12h13
6 Réponses (Nouveau sujet)
Sujet visité 1087 fois
[résolu] mySQL & css
Auteur : geoffroy
Posté le 06 02 2007 à 15h00
11 Réponses (Nouveau sujet)
Sujet visité 792 fois
[Résolu] Mysql et (...)
Auteur : aguenard
Posté le 04 02 2007 à 17h25
3 Réponses (Nouveau sujet)
Sujet visité 907 fois
<< 1 2 3 4 5 6 7 >>
Mentions légales   -   Crédits   -   Nous contacter   -   © Benzor 2006