Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour à tous !
J'ai un problème avec la gestion de mes décimales sous php...
Je récupère un nombre par la lecture d'un .csv, je l'ai donc dans ma variable $nombre[2]
Cette valeur est par exemple de 0.02
Quand je fais des opérations dessus, le résultat est systématiquement 0, je suppose donc que php me met la variable en nombre entier...
J'ai fait un $nouvellevariable = number_format($nombre[2] , 2);
mais il me retourne une valeur égale à 0 ........
Et là je suis perdu
Quelqu'un pourrait m'aider ?
merci à tous et bon appétit !
Hors ligne
Hors ligne
fopen r
ensuite fread
Hors ligne
Saluton,
Il faudrait essayer d'intuiter les questions induites par des réponses absconses.
Et comment les valeurs transitent-elles de fread vers $nombre ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Salut
Je vais mettre mon code ça sera peut être plus simple
<?php
$fp = fopen('http://blabla.csv',"r");
$nombre = fread($fp,1024);
$nombre = explode(';',$nombre,5);
echo $nombre[2]; ==> Là ok ça me sort 0.02
$nombre50 = $nombre[2]*50; ==> Là ma valeur est égale à 0
Ca me fait le même problème avec un $nombre[2] égale à 20,07 , quand je fais une opération il ne prend pas en compte ce qui est après la virgule....
Voilà voilà :$
Dernière modification par Capi (03-03-2010 15:10:53)
Hors ligne
$50 ? Il y aurai pas comme un petit soucis dans ton code ? ^^
PHP ne sait pas interpréter les euros et les dollars, pour lui un chiffre est un chiffre voilà tout.
Tu aurais activé les affichages des notice et warning dans ton php.ini que tu aurais eu une jolie erreur pour te prévenir.
Hors ligne
Euuuuuuuh j'ai édité, erreur en écrivant sur le forum.
Le code est bien correct dans mon fichier ;-)
Hors ligne
chalut
$nombre50 = floatval($nombre[2])*50;
voilou
a++
Hors ligne
Chalut ;-)
Mais je suis désolé, ça me ressort toujours 0 :s
(et $nombre[2] vaut toujours 0.02 ^^ )
Hors ligne
Salut,
Essaie $nombre50 = $nombre[2] * 50.0;
Hors ligne
Non toujours 0
Hors ligne
Alors pour résumer mes derniers essais
echo $nombre[2]; m'affiche bien 0.02
$variable = $nombre[2]; puis echo $variable; m'affiche bien 0.02
Par contre à partir du moment où je vais une opération sur $nombre[2], sur $variable ça m'affiche 0
Si je fais $variable2 = floatval($nombre[2]); ou $variable2 = floatval($variable); et ensuite un echo ça m'affiche 0 aussi
J'avoue que je suis completement perdu :s
Dernière modification par Capi (03-03-2010 18:07:03)
Hors ligne
settype($nombre50, "float");
$nombre50 = floatval($nombre[2])*50;
a++
Hors ligne
je suis désolé non...
Ca me tue que la valeur puisse bien passer dans de nombre[2] à $variable mais qu'après on ne puisse rien y faire, même en la déclarant float
Dernière modification par Capi (03-03-2010 18:41:07)
Hors ligne
ce doit etre un prbleme de separateur
essaye avec 0,02
a++
Hors ligne
En fait.... c'est moi qui écrivait 0.02 ici mais le résultat retourné est 0,02
Je viens de trouver ce lien, il est possible qu'il aide ? http://php.net/manual/en/language.types.float.php
Hors ligne
Alors c'est normal.. Ton nombre n'est pas un flottant mais une chaîne de caractère...
En PHP la virgule est un point. Fais le changement avec un str_replace puis utilises l'une des fonctions de Pierrot si cela ne suffit pas.
Hors ligne
J'allais juste dire que c'était bon, effectivement un str_replace suffisait...
Merci beaucoup à vous tous...
Maintenant je saurai (je vais le recopier 100 fois) : en php il faut un **** de . et pas une virgule
Hors ligne
Pages :: 1