Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/12/2010, 17h21   #1
Membre du Club
 
Inscription : mai 2005
Messages : 94
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 94
Points : 58
Points : 58
Envoyer un message via MSN à kwakanar
Par défaut Curiosité avec les float

Bonjour à tous

Je rencontre un problème extrêmement bizarre avec l'affichage de nombres en virgule flottante. Pour simplifier, aux inclusions et aux enchaînements d'appels de fonctions près, je fais un truc du genre :

Code :
1
2
3
4
5
6
7
8
9
 
class A {
  public function f () { return 12; }
}
 
for ($i=0; $i <= 10; $i++) {
  $obj = new A;
  printf("%.2f \n", $obj->f());
}
et là, le résultat est un truc du genre :

Code :
1
2
3
4
5
6
7
8
9
 
0
0
0
b
b
NAN
NAN
0
bref, les appels successifs à la même fonction ne renvoient pas le même résultat, ou alors c'est l'affichage qui bug.

J'ai essayé les pistes suivantes :
- remplacer les printf par des echo : sans effet
- vérifier l'encodage : ça à l'air bon du côté de l'UTF-8

En revanche, lorsque j'exécute mon bout de code en dehors de son contexte (avec les classes incluses en début de script, PHP interprète environ 3000 lignes à chaque affichage de page), ça à l'air de marcher mieux. D'où ma question : est-ce que des problèmes de performance peuvent avoir ce genre d'effet sur l'affichage des nombres, en particulier des flottants ?

Je précise que toutes les autres opérations (beaucoup de traitement objet et de requêtes SQL en particulier) se font sans aucun problème...

Des idées ?
Merci !
kwakanar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 16h12   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Toujours aucune réponse ?

Je sais pas quoi te dire mais pour vérifier que la valeur du float est correcte, tu peux semer des var_dump un peu partout.
A mon humble avis, ton algo est en cause, car je n'ai jamais rencontré ce problème et je n'arrive pas à le reproduire...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 16h27   #3
Membre actif
 
Avatar de hazamor
 
Homme
Développeur Web
Inscription : décembre 2008
Messages : 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2008
Messages : 179
Points : 199
Points : 199
Envoyer un message via MSN à hazamor
J'ai essayé ton code, et il le resultat est:
Citation:
12.00 12.00 12.00 12.00 12.00 12.00 12.00 12.00 12.00 12.00 12.00
je ne vois pas de problème!

(Tu peut utiliser la fonction number_format:
Code :
1
2
3
 
string number_format ( float $number , int $decimals = 0 , 
                    string $dec_point = '.' , string $thousands_sep = ',' )
)
hazamor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 16h37   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
@hazamor

Je pense pas que ce soit son véritable algo.

Tu peux poster tes sources ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h55.


 
 
 
 
Partenaires

Hébergement Web