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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    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 averti
    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
    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 ?

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    objet.value=(2.7*this.value).toFixexd(2);
    !!

  5. #5
    Membre averti
    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
    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" />

  6. #6
    Membre averti
    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
    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 ?

  7. #7
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    52
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 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 ...

+ 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