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 :

calcul du produit de 2 décimaux en JavaScript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 42
    Points
    42
    Par défaut calcul du produit de 2 décimaux en JavaScript
    Bonjour tout le monde.
    J'ai un souci en calculant le produit de deux nombres décimaux en javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var nbr1 = "3";
    var nbr2 = " 10.2";
    var nbr 3 =nbr1*nbr2;
    Le résultat qui s'affiche est 30.599999999999998 est non 30.6 !!
    Est ce quelqu’un a une idée de pourquoi ?
    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    Bonjour,

    Pour arrondir à 1 chiffre après la virgule, tu peux utiliser la fonction toFixed()


  3. #3
    Membre actif
    Avatar de fmdao
    Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 90
    Points : 210
    Points
    210
    Par défaut
    Dans la machine la précision des calculs est limitée !

    Or, la machine ne calcule pas sur des nombres décimaux mais dans un format binaire ( IEEE je sais plus combien ? )
    Il y a donc une conversion décimal vers binaire, puis calcul de l'opération puis conversion binaire vers décimal pour l'affichage.

    D'où petite erreur de calcul, il faut arrondir le résultat.

  4. #4
    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 : 53
    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
    Ce n'est pas particulièrement lié à JavaScript mais à tous les langages utilisant la représentation des nombres en virgule flottante.
    Voir : http://floating-point-gui.de/languages/javascript/
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 42
    Points
    42
    Par défaut
    Merci tous pour vos réponses.
    Voila ce que j'ai fait comme solution qui peut être utile pour tout problème pareil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var a=toFixed(10.2,2);
    var b=3;
    var nbr=a*b;
    var multiple = Math.pow(10, 2);
    var Num= Math.round(nbr* multiple) / multiple;
    nbr=toFixed(rndedNum,2);

    Merci encore pour vos réponses
    Cdt

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

Discussions similaires

  1. [SVG] calculer le milieu d'un chemin en Javascript
    Par meryet dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/10/2013, 13h45
  2. calcul de produit scalaire sous PHP
    Par abegault dans le forum Langage
    Réponses: 5
    Dernier message: 21/05/2008, 14h41
  3. comment calculer le produit de deux nombres en PHP
    Par batalich dans le forum Langage
    Réponses: 3
    Dernier message: 12/03/2007, 09h02
  4. Calculer la taille d'une balise en javascript
    Par elfyx dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/02/2007, 15h19
  5. [PHP-JS] Calculs dans une page php à l'aide javascript
    Par GClavet dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 31/10/2006, 09h10

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