PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 03-03-2010 11:51:24

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Gestion des décimales

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 sad

Quelqu'un pourrait m'aider ?

merci à tous smile et bon appétit !

Hors ligne

#2 03-03-2010 12:24:47

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Gestion des décimales

Quelle est ta fonction pour lire le csv ? Certaines fonctions comme fscanf utilisent des types de lectures, il faut utiliser le %f pour les flottants.

Dernière modification par xTG (03-03-2010 12:25:07)

Hors ligne

#3 03-03-2010 14:29:06

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Gestion des décimales

fopen r
ensuite fread

Hors ligne

#4 03-03-2010 14:37:59

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Gestion des décimales

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

#5 03-03-2010 15:02:02

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Gestion des décimales

Salut smile

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

#6 03-03-2010 15:09:06

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Gestion des décimales

$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

#7 03-03-2010 15:11:28

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Gestion des décimales

Euuuuuuuh j'ai édité, erreur en écrivant sur le forum.
Le code est bien correct dans mon fichier ;-)

Hors ligne

#8 03-03-2010 16:54:56

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Gestion des décimales

chalut big_smile

$nombre50 = floatval($nombre[2])*50;


voilou big_smile

a++

Hors ligne

#9 03-03-2010 17:04:33

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Gestion des décimales

Chalut ;-)

Mais je suis désolé, ça me ressort toujours 0 :s
(et $nombre[2] vaut toujours 0.02 ^^ )

Hors ligne

#10 03-03-2010 17:55:21

dionysos
Membre
Lieu : Montpellier
Inscription : 18-02-2010
Messages : 24

Re : Gestion des décimales

Salut,

Essaie $nombre50 = $nombre[2] * 50.0;

Hors ligne

#11 03-03-2010 18:00:12

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Gestion des décimales

Non toujours 0 sad

Hors ligne

#12 03-03-2010 18:06:50

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Gestion des décimales

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

#13 03-03-2010 18:13:07

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Gestion des décimales

settype($nombre50, "float");
$nombre50 = floatval($nombre[2])*50;

a++

Hors ligne

#14 03-03-2010 18:31:50

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Gestion des décimales

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

#15 03-03-2010 19:01:06

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Gestion des décimales

ce doit etre un prbleme de separateur

essaye avec 0,02


a++

Hors ligne

#16 04-03-2010 09:23:48

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Gestion des décimales

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

#17 04-03-2010 09:30:09

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Gestion des décimales

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

#18 04-03-2010 09:53:53

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Gestion des décimales

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

Pied de page des forums