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 :

Chiffres à virgule


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2002
    Messages : 57
    Points : 25
    Points
    25
    Par défaut Chiffres à virgule
    Bonjour,

    J'effectue une opération de calcul sur un champ, et je me demande pourquoi, lorsqu'il calcule 3x2.7 le résultat est de 8.10000 et pour 2x2.7 = 5.4 (sans la marée de 0 qui suit). C'est un grand mystère !

    A la base, j'essaie d'obtenir des chiffres toujours à virgule, même s'il n'y a rien après, mais seulement avec deux nombres, p.ex. 5.40 ou 8.10 ou encore 9.00.

    J'ai essayé avec math.round, mais ce n'est pas vraiment son utilité il me semble :p

    Quelqu'un aurait-il une suggestion, s'il vous plaît ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="text" name="objet_nbre" onkeyup="objet.value=(2.7*this.value); calcule();" />
    <input type="text" id="objet" name="objet" value="0" readonly="readonly" />
    Merci d'avance

  2. #2
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    http://javascript.developpez.com/faq...ript#NBDecimal
    toFixed

    tous les nombres sont des flottant et les calculs sont peu précis...(transformation en binaire ect...)

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 52
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Corinne
    J'ai essayé avec math.round, mais ce n'est pas vraiment son utilité il me semble :p
    J'ai aussi "détourné" l'utilité de math.round, pour une fonction calculant des pourcentages (du genre 85.21, 0.56, bref, toujours deux chiffres apres la virgule)

    L'astuce consiste a multiplier par 100, arrondir a l'entier pres, et rediviser par 100 ...

    Math.round( #VALEUR# * 100 ) / 100;

    ceci dit, Javascript semble pas tres performant en math ...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2002
    Messages : 57
    Points : 25
    Points
    25
    Par défaut
    J'ai essayé avec cette méthode, ça marche très bien pour limiter à deux chiffres après la virgule, seulement ça m'arrondit aussi le total... Par exemple si le total devait être 13.50, et bien il n'est que de 13.00. Une raison à cela ?

  5. #5
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objet.value=(2.7*this.value).toFixexd(2);
    !!

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2002
    Messages : 57
    Points : 25
    Points
    25
    Par défaut
    Merci, je le mettais pas au bon endroit du tout !

    Par contre, j'ai toujours le problème de l'arrondissement qui supprime des valeurs, lorsque je calcule un total, et je ne comprends pas vraiment d'où il vient.

    Si je mets (p.ex.) 5x objet1 (prix total = 13.50) et 0x objet 2, le total sera de 13.00 pour une raison mystérieuse...

    Une idée ? Merci d'avance !

    Code mon javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    objet1_prix = document.getElementById('objet1').value;
    objet2_prix = document.getElementById('objet2').value;
     
    total = parseInt(objet1_prix,10)+ parseInt(objet2_prix,10);
    document.getElementById('le_total').value = total;

    Code mon html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <input type="text" name="objet1_nbre" onkeyup="objet1.value=(2.7*this.value).toFixexd(2); calcule();" />
    <input type="text" id="objet1" name="objet1" value="0" readonly="readonly" />
    <input type="text" name="objet2_nbre" onkeyup="objet2.value=(2.7*this.value).toFixexd(2); calcule();" />
    <input type="text" id="objet2" name="objet2" value="0" readonly="readonly" />
    <input type="text" id="le_total" name="le_total" value="0" readonly="readonly" />

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2002
    Messages : 57
    Points : 25
    Points
    25
    Par défaut
    Je découvre qu'apparemment c'est la fonction parseInt() qui pose un problème... Seulement, je ne trouve rien pour la contourner. Existe-t-il une fonction similaire permettant une addition simple, mais avec des chiffres à virgule ?

  8. #8
    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
    parseFloat
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2002
    Messages : 57
    Points : 25
    Points
    25
    Par défaut
    Génial, ça fonctionne cette fois, merci !

    Question bonus Existe-t-il un site Javascript similaire à php.net, listant les fonctions existantes ?

  10. #10
    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
    en général je consulte devguru:
    http://www.devguru.com/Technologies/...ipt_intro.html
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/11/2008, 21h47
  2. Chiffre à virgule
    Par teddy-a3 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/07/2008, 10h27
  3. Chiffres à virgule : points et virgules ?
    Par poulette3000 dans le forum Langage
    Réponses: 11
    Dernier message: 23/07/2007, 12h23
  4. Rand avec chiffre à virgule
    Par Mikiman dans le forum Langage
    Réponses: 2
    Dernier message: 23/09/2006, 14h56
  5. Problème de format pour des chiffres à virgule
    Par bob75000 dans le forum Access
    Réponses: 5
    Dernier message: 21/07/2006, 10h42

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