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 :

Les nombres décimaux


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut Les nombres décimaux
    Bonjour,

    Je me prends la tête sur des calculs mathématiques "très simple" .. une addition mais le problème c'est que l'addition comporte +de 10 chiffres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    echo 12345678919+0.1234;
    ou 
    echo floatval(12345678919+0.1234);
    ?>
    Le résultat est 12345678919,1 au lieu de 12345678919,1234. (les 4 chiffres aprés la virgule son important)
    Quelqu'un a une idée ?

    Merci.

    Cordialement,
    Sid.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    regrdes du côté de BCMath

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo bcadd('12345678919', '0.1234');

  3. #3
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bonsoir,

    Pour moi cette réponse me retourne : 12345678919

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo bcadd(12345678919, 0.1234); ?>
    Une autre solution ?
    Merci.

  4. #4
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Bonsoir,

    Ok il suffit d'ajouter combien nous voulons de chiffres aprés la virgules 4 par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $a = '1.234';
    $b = '5';
     
    echo bcadd($a, $b);     // 6
    echo bcadd($a, $b, 4);  // 6.2340
    ?>

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par sidacoq
    Une autre solution ?
    Euh... oui, lire la doc du lien que t'a fourni rawsrc :
    left_operand

    L'opérande gauche, sous la forme d'une chaîne de caractères.
    right_operand

    L'opérande droite, sous la forme d'une chaîne de caractères.

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Et je te conseille de bien manipuler tes grands nombres comme des strings. Sinon bonjour les surprises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a = bcadd(123456799999999999999999999999999999999999, 0.999999, 5);
    $b = bcadd('123456799999999999999999999999999999999999', '0.999999', 5);

  7. #7
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Merci pour vos réponses.
    Toutefois, je n'arrive pas à convertir un integer en string pour l'utiliser dans la fonction bcadd...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $time = 1318971774.12;
    $time = strval($time);
    echo bcadd($time,'0.012', 3);
    Ca ne fonctionne pas merci.

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par sidacoq Voir le message
    Ca ne fonctionne pas merci.
    T'es sûr ? Chez moi ça fonctionne sans problèmes => 1318971774.132

    Pour le transtypage en PHP voici un lien qui devrait t'en apprendre plus.
    Et pour convertir en string voici plusieures méthodes arrivant toutes au même résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $a = 10;            // $a est un entier
    $b = "$a";          // $b est une chaîne
    $c = (string) $a;   // $c est une chaîne
    $d = strval($a);    // $d est une chaîne
    ?>
    Le transtypage le plus rapide est $b.

  9. #9
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Merci pour ton retour mais bizarre ca ne fonctionne pas.
    Je suis tout à fait d'accord sur le transcryptage mais justement je ne comprends pas pk ca ne fonctionne pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $time = 1318971774.12;
    $time = strval($time);
    echo bcadd($time,'0.012', 3);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $time = 1318971774.12;
    $time = (string)$time;
    echo bcadd($time,'0.012', 3);
    Me retourne le même résultat : 0.012

    Étrange non

  10. #10
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Aucune autre idée les gars ?
    Je suis vraiment bloqué sur mon projet c'est dommage... je reste dans l'attente d'une réponse.
    Merci.

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu es sûr que bcmath est activé ?

  12. #12
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    oui comme il me retourne une valeur ...

  13. #13
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Un autre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $time = time();
    echo bcadd($time,'0.02', 3);
    ?>
    çà ça fonctionne !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $time = microtime(true);
    echo bcadd($time,'0.02', 3);
    ?>
    Ça ne fonctionne pas, ça me retourne 0.020


Discussions similaires

  1. Problème d'arrondi sur les nombres décimaux
    Par marcandre dans le forum Développement
    Réponses: 2
    Dernier message: 17/01/2011, 16h29
  2. [Oracle] Afficher correctement les nombres décimaux
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/11/2010, 16h57
  3. Réponses: 21
    Dernier message: 01/09/2008, 11h16
  4. problème avec les nombres décimaux
    Par pierrot10 dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2008, 10h09
  5. [Débutant] Les nombres décimaux
    Par Sylvester dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/05/2006, 13h57

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