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 :

décimaux et imprécision à l'affichage


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Par défaut décimaux et imprécision à l'affichage
    Bonjour, j'ai un petit problème avec des float.

    Voici un exemple très parlant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $toto = 56.6 + 7.5; echo $toto; // Affiche 64.1
    $toto -= 56.6; echo $toto; // Affiche 7.5
    $toto -= 7.5; echo $toto; // Affiche -7.105427357601E-15
    $toto = round($toto,2); echo $toto; // Affiche -0
    $toto = round($toto,2); echo $toto; // Affiche enfin 0
    Comme vous vous en doutez, il s'agit de prix que j'additionne puis que je soustrait, selon que les articles sont ajoutés ou retirés. Le hic est que le codage binaire des nombres fait apparaître un défaut d'affichage, lorsque le total revient à 0. J'ai bien trouvé la solution écrite ci-dessus, en appliquant 2 fois round (bizarre que la première fois il ne supprime pas le signe!), ou en arrondissant la valeur absolue du total, pour éviter de faire 2 arrondis pour rien, mais j'aimerais savoir s'il existe une meilleure solution.

    Merci d'avance!

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,

    Il faut travailler avec des fonctions de plus grande précision "BC MATH" .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    (float)$val1 =56.6;
    (float)$val2 = 7.5; 
     
    bcscale(3); //donne une précision de trois chiffres après la virgule
    $toto = bcadd($val1,$val2); echo $toto.'<br />'; // Affiche 64.100
    $toto = bcsub($toto,$val1); echo $toto.'<br />'; // Affiche 7.500
    $toto = bcsub($toto,$val2); echo $toto.'<br />'; // Affiche 0.000
    $toto = round($toto,2); echo $toto.'<br />'; // Affiche 0

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 368
    Billets dans le blog
    17
    Par défaut
    selon que les articles sont ajoutés ou retirés
    Tu peux surement t'y prendre différemment sans jamais de soustraction.

  4. #4
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Par défaut
    Merci de vos réponses.

    En effet à partir du moment où j'ai les infos de chaque article, je pourrais recalculer le total à chaque fois. Mais comme j'affiche le total sur chaque page, c'est un peu dommage de calculer la même chose à chaque fois qu'une page est chargée

    Et concernant BC Math, il n'est pas activé sur mon serveur. ^^

Discussions similaires

  1. [10g] Problème d'affichage des nombre décimaux
    Par arum38 dans le forum Forms
    Réponses: 8
    Dernier message: 15/11/2013, 10h01
  2. Affichage des décimaux avec point et non pas virgule
    Par karnass dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/02/2013, 18h46
  3. [MySQL] affichage des Décimaux avec point
    Par yaboki dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/09/2009, 13h19
  4. Réponses: 3
    Dernier message: 17/03/2009, 14h51
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 22h00

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