IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Curiosité avec les float


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Points : 82
    Points
    82
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    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...

  3. #3
    Membre actif Avatar de hazamor
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 179
    Points : 206
    Points
    206
    Par défaut
    J'ai essayé ton code, et il le resultat est:
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string number_format ( float $number , int $decimals = 0 , 
                        string $dec_point = '.' , string $thousands_sep = ',' )
    )

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    @hazamor

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

    Tu peux poster tes sources ?

Discussions similaires

  1. Problème avec les float
    Par sandytarit dans le forum Requêtes
    Réponses: 8
    Dernier message: 03/08/2006, 21h04
  2. Problème de calcul avec les float
    Par Oberown dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/05/2006, 09h28
  3. [HTML][Bug] Avec les float/clear, c'est moi ou FF ?
    Par Séb. dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/01/2006, 14h56
  4. [XHTML] problème avec les float:left
    Par glloq8 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/11/2005, 17h15
  5. erreur avec les floats
    Par Halobox dans le forum C
    Réponses: 14
    Dernier message: 11/10/2005, 23h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo