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 :

Récupérer la partie décimale d'un nombre à virgule flottante


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Récupérer la partie décimale d'un nombre à virgule flottante
    Bonjour, j'essaie de récupérer la partie droite d'un float en php et je ne sais pas du tout comment je peux m'y prendre. Est-ce que quelqu'un pourrait me renseigner svp ?

    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pi = 3.14;
     
    $trois = intval($pi);
    $virgulequatorze = $pi - $trois;
    un truc comme ca ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    si tu veux virer le point, tu as plus qu'a passer la variable $quatorze en string, et faire un substring sur le premier caractere

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Je pense que la solution de substr() me semble bien pratique, en effet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $float = 3.14;
    echo substr($float, strpos($float, '.')+1);

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci bcp ca marche super.

    et merci d'avoir changé le titre kirkis, suis nouveau sur le forum donc du coup je saurais comment poster la prochaine fois

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    A ton service !

    N'oublie pas le bouton "Résolu", en bas à gauche ^^

    Bonne continuation !

  7. #7
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    tfff

    comme ce message est placé dans google je déterre. dsl.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $pi = 3.1415
    echo 'gauche ', floor($pi), ' et droite ', $pi - floor($pi);

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Salut, tout comme la personne ci-dessus, ce résultat remontant souvent dans google, je propose un code plus rapide que ceux cités ci-dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $floatNumber=4.573;
    $intPart=(int)$floatNumber;
    $decimalPart=(int)str_replace('.','',$floatNumber-(int)$floatNumber);
    C'est un code beaucoup plus optimisé que les précédents, qui utilise le transtypage, c'est à dire le casting explicite en int.
    (int)5.73 transformera 5.73 en int, donc le retour sera 5

    Attention cependant à son utilisation, mal utilisé ça peut provoquer des erreurs de calculs, ainsi:
    (int)((0.1+0.7)*10) retournera 7 et non pas 8 :S !

  9. #9
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Une version améliorée, avec l'arrondis :
    $PourcentValue=01.05605565650;
    $PourcentValue=int($PourcentValue+0.5);

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 7
    Points
    7
    Par défaut Une autre manière
    Pour récupérer le nombre après la virgule d'un décimal on peut utiliser en PHP "explode" je donne un exemple de la méthode pour que ce soit plus clair:

    On a le nombre décimal suivant:
    $test = 4.05;

    On utilise la fonction explode pour scinder la décimale au niveau du ".":
    $nbrTest = explode(".", $test);

    Ce qui nous donne un tableau de deux éléments (avant et après le "."):
    array (size=2)
    0 => string '4' (length=1)
    1 => string '05' (length=2)


    Donc la partie décimale se récupère avec :
    $nbrTest[1]

    Ensuite si vous voulez réutiliser cette décimale il est possible de faire comme cela:
    $resultTest = ("0.".$nbrTest[1])*40;

    Le résultat final de cet exemple donnera le chiffre "2"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer la partie décimale d'un nombre
    Par JauB dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 10/04/2008, 14h04
  2. affichage partie décimal d'un nombre
    Par freestyler1982 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 30/10/2006, 12h55
  3. Comment récupérer la partie décimale d'un double
    Par jarjardos dans le forum Langage
    Réponses: 9
    Dernier message: 26/07/2006, 15h41
  4. Extraire la partie décimale d'un nombre
    Par Kant2006 dans le forum C++
    Réponses: 19
    Dernier message: 16/06/2006, 20h05
  5. récupérer la partie décimale d’un champ
    Par maouazzani dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/04/2004, 16h10

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