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 :

Explode un float


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut Explode un float
    Bonjour à tous,

    Je viens de découvrir quelque chose:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
                            $float = 0.5; 
     
    			$floatParts = explode('.', $float);
     
    			$integer = $floatParts[0];
    			$decimal = $floatParts[1];
     
    			echo $decimal; //5
     
    			$float = 0.05; 
     
    			$floatParts = explode('.', $float);
     
    			$integer = $floatParts[0];
    			$decimal = $floatParts[1];
     
    			echo $decimal; //05
     
     
    			$float = 0.005;
     
    			$floatParts = explode('.', $float);
     
    			$integer = $floatParts[0];
    			$decimal = $floatParts[1];
     
    			echo $decimal; //005
     
     
    			$float = 0.0005;
     
    			$floatParts = explode('.', $float);
     
    			$integer = $floatParts[0];
    			$decimal = $floatParts[1];
     
    			echo $decimal; //0005
     
     
    			$float = 0.00005;
     
    			$floatParts = explode('.', $float);
     
    			$integer = $floatParts[0];
    			$decimal = $floatParts[1];
     
    			echo $decimal; //0E-5
    Le dernier echo me retourne 0E-5 comment obtenir 00005?

    Merci à tous pour vos réponses.

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Intéressant de voir qu'il converti directement dans cette notation.
    J'ai cherché un moment et j'ai trouvé cela qui fait ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $float = number_format(0.00005,5,'.','');
    $floatParts = explode('.', $float);
     
    $integer = $floatParts[0];
    $decimal = $floatParts[1];
     
    echo $decimal; //00005

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  3. #3
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    Merci pour ta réponse Baptiste,

    J'ai cherché un moment...
    Moi aussi j'y ai passé quelques heures de trop à mon goût. J'avais aussi essayé cette solution, ça fonctionne si l'on connait déjà le nombre de chiffres après la virgule, sinon comment obtenir la valeur 5 (ou 6 ou 7 ou 8) du deuxième argument de la fonction.

    J'ai fait quelques tests de l'exemple précédent, modifié comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                            $float = 1.00005;
     
    			$floatParts = explode('.', $float);
     
    			$integer = $floatParts[0];
    			$decimal = $floatParts[1];
     
    			echo $decimal; //00005
    A tester avec plusieurs combinaisons et si cela est stable, il suffira de faire une condition sur la valeur de $integer, si c'est 0 faire un +1 sur la variable $float et la spliter à nouveau.

    Etrange!!!

    A suivre demain...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
                            $float = 1.0000000000005;
     
    			$floatParts = explode('.', $float);
     
    			$integer = $floatParts[0];
    			$decimal = $floatParts[1];
     
    			echo $decimal; //0000000000005
     
     
                            $float = 1.00000000000005;
     
    			$floatParts = explode('.', $float);
     
    			$integer = $floatParts[0];
    			$decimal = $floatParts[1];
     
    			echo $decimal; //Undefined offset: 1
     
     
                            $float = 0.00000000000005;
     
    			$floatParts = explode('.', $float);
     
    			$integer = $floatParts[0];
    			$decimal = $floatParts[1];
     
    			echo $decimal; //0E-14

Discussions similaires

  1. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  2. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15
  3. [7RC3] Formatage de champs float
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 19/05/2003, 09h38
  4. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32
  5. equivalent à explode?
    Par djridou dans le forum Langage
    Réponses: 3
    Dernier message: 28/08/2002, 11h01

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