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 :

division en javascript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut division en javascript
    Bonjour

    question concernant l operation divison en javascript
    pk lorsque je fais :
    Code : JavaScript

    alert ("resulat de la divison est :"+(48.3/16.1));
    alert ("resulat de la division est :"+(64.4/16.1));




    le premier me donne un resultat de 2.99999999 alors que chacun sait que ça fait 3 et que ça tombe juste
    et que pour le deuxieme alert cela fonctionne et renvoie 4 et non 3.9999 par exemple
    pouvez vous m aider car j en ai besoin pour l incrementation d un compteur toutes les 16.1 secondes par exemple ( j utilise un test du genre var%16.1==0 alors incrementer

    merci




    merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    personne ne voit?

  3. #3
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    sûrement un bug dans le module d'arithmétique flotante pour le moteur JavaScript de ton browser
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut
    Essaye avec une autre navigateur pour vérifier ce que dit Swoog, et test avec une valeur entière.

    Bizare quand même

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    cela ne change pas grand chose que je sois sours IE ou firefox
    merci qd meme

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut
    Et avec des valeurs entières?

  7. #7
    Membre éclairé Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Par défaut
    vous en voulez une autre ?
    essayez :
    alert ("resulat de la division est :"+(0.1+0.1+0.1));
    chez moi ça fait 0.300000000004 ...

    Problème commun à toutes les représentations des nombres "à virgule flottante", paraît-il... et pas seulement en javascript:
    http://fr.wikipedia.org/wiki/Virgule_flottante

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    bon et bien on est bien avancer si les ordi gere pas cela loool
    ce qui est bizarre c est que si je fais (48,3) / (16,1) cela a l air de bien donner 3 si je met des points a la place et bien cela ne marche pas enfin j obtiens 2,999999999..

    est ce que vous pourrirez m indiquez comment on extrait une partie d un chiffre
    exemple le chiffre est 2,9999999999 juste avoir 2,999 par exemple
    comme ça hop je le modifie moi meme en 3 par exemple

    lmerci

  9. #9
    Membre éclairé Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Par défaut
    avec Math.round(48.3/16.1).

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    merci mais ça arrondi un peu de trop
    car si je passe de 48.2 / 16.1
    et 48.3/16.1
    il arrondira les deux resultats alors qu en fait seul 48.3 / 16.1 est de 3
    je sais pas si je suis tres clair mais ça me convient moyen


    il me fau une extraction d un chiffre pour etre sur que le chiffre est X.9999999999
    connais une methode stp?

    et merci pour ton aide et ta patience

  11. #11
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseInt( tonChiffre * 10000 ) / 10000;
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    N'oubliez pas de cliquer sur quand votre question à trouvé une solution.

    Si vous n'avez pas encore lu les règles du club, mieux vaut tard que jamais!

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    merci c pas mal le parseInT avec 10000
    mais si quelqu un connais aussi l exctraction d une partie d un chiffre je prend aussi loool

    merci a vous tous

  13. #13
    Membre éclairé Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Par défaut
    oui, ou Math.round(variable*1000)/1000

  14. #14
    Membre éclairé Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Par défaut
    après, je pense qu'on tombe dans la manipulation de chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    variable.toString().substr(0,5);
    par ex. pour extraire les 5 premiers chiffres.

  15. #15
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    il s'agit bien d'un problème d'interprétation de la virgule flottante par javascript en fonction du browser ...


    voici une petite focntion pour obtenir le bon résultat...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <script type='text/javascript'>
    function ExactRound(a,b,e){
    a=String(a)
    b=String(b)
    var deci=( a.split('\.')[1].length > b.split('\.')[1].length )?a.split('\.')[1].length:b.split('\.')[1].length;
    var c= Number(a) + Number(b);
    var expo= (Math.pow(10,deci))
    var result=((Math.round(c*expo)/expo).toFixed(e));
    return result;
    }
    </script>
     
    </head>
     
    <body>
    <script type='text/javascript'>
    alert(ExactRound(70.8021,86.104,4))
    </script>
    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 !

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    Bonjour

    j ai testé ta fonction la et avec ton calcul ( 70.8021, 86.104, 4)
    j obtiens un resultat de 156.9061
    un peu bizarre comme resultat nan? ou ça vient de moi ?


    merci en tout cas

  17. #17
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    ben je sais pas ce que tu attend d'une addition de 70.8021 + 86.104 arrondi à 4 chiffres après la virgule ...
    pour moi le résultat est correct ...

    ..70.8021
    +86.104
    =======
    156.9061
    non ?
    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 !

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    oui en effet le resultat est bon
    j étais depuis le debut dans une operation de divison ou de modulo
    donc oki ça va mieux
    désolé c est moi qui est buggé la

    simplement changer le signe dans ta fonction alors
    merci

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9
    Par défaut
    merci

    ça marche niquel
    une tres bonne fonction a conserver
    merci tous

    probleme résolu (je le valide avec la ptite fleche)

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

Discussions similaires

  1. Commande Javascript Interdiction division par 0
    Par Aromatic dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2014, 12h29
  2. Réponses: 1
    Dernier message: 22/03/2010, 09h56
  3. JavaScript<---->ActionScript
    Par crazypiou dans le forum Flash
    Réponses: 21
    Dernier message: 17/04/2009, 17h14
  4. une "division flottante" avec javascript
    Par maniaco_jazz dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/12/2005, 11h32
  5. JavaScript de vérification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/02/2003, 13h48

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