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

JavaScript Discussion :

total somme eval()


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 16
    Points
    16
    Par défaut total somme eval()
    Voila, j'ai observé un petit bug avec la fonction eval lorsque je fais la somme de plusieurs valeurs :
    alert( (eval( 0.2) + eval(0.5) + eval(0.1) + eval(0.1)+ eval(0.1) ))
    renvoie 0.999999999999999 alors que la somme devrait être égale à 1.

    Et je ne comprend pas pourquoi, il ne renvoie pas 1.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    fasi une recherche sur le forum et dasn la faq avec "arrondi" c'st un problème de float bien connu des javascripteurs ...

    par exemple ce lien
    http://www.developpez.net/forums/sho...hlight=arrondi

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    0,9999999999999999999999999999... = 1.

    Preuves mathematiques :



    x = 0.9999999999999...

    donc

    10x = 9.999999999999...

    10x-1x = 9.

    9x = 9.

    9x/9 = 9/9.

    donc

    x = 1.


    Si ca vous semble un peu tire par les cheveux, voila une autre forme plus simple :

    1/3 = 0,333333333333....

    donc

    3/3 = 0,99999999999....

    alors que

    x/x = 1 pour tout x different de 0...

    donc

    0,99999999999... = 1.


    C'est en effet un probleme de float avec eval().
    Pour resoudre votre probleme, essayez de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alert( (eval( 0.2) + eval(0.5) + eval(0.1) + eval(0.1)+ eval(0.1) ) * 1)

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    merci bcp.

    Je vais pouvoir corriger proprement mon problème car pour contourner je testai si (eval(...) = 1 ou eval(...) = 0.9999999999999999)

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Ceci étant ... plutot qu'eval
    j'aurais utilisé parseFloat ou Number ...

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

Discussions similaires

  1. fonctions SOUS.TOTAL & SOMME.SI
    Par clarisse dans le forum Excel
    Réponses: 6
    Dernier message: 09/11/2007, 08h56
  2. [2.1.1] [Debutant] probleme de somme Total.sum
    Par lilou77 dans le forum BIRT
    Réponses: 5
    Dernier message: 09/01/2007, 10h09
  3. Calcul de la somme total
    Par Velsy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/06/2006, 13h29
  4. somme totale et autres champs
    Par melou dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/04/2006, 14h42
  5. Somme totale... Défi !
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 04/08/2005, 21h03

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