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 simple approximatif


Sujet :

JavaScript

  1. #1
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut Calcul simple approximatif
    Bonjour,

    je rencontre un problème dans un script, il m'a fallut du temps pour piger que dans mon test cela venait d'une division qui est sensée tomber juste mais qui ne l'est pas avec javascript...
    Après un petit test, ce problème est le même avec python...

    Comment faire en sorte d'avoir le bon résultat à la division suivante :
    et non ce que me renvoie javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2.4/24 = 0.09999999999999999
    Et ce sans arrondir...

    Ce cas est spécifique mais je ne dois pas rencontrer ce genre de problème...

    je veux juste vérifier si un calcul a été arrondi ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DebitHoraire = parseFloat((DebitContinu / 24).toFixed(1));
     
    if(DebitHoraire != DebitContinu / 24)
    Comment différentier une approximation liée au processeur à une approximation mathématique ?

    Une idée ?

    Merci.

  2. #2
    Membre émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 340
    Par défaut
    Bonjour,
    C'est une question qui revient de temps en temps, il faudrait faire une recherche pour voir ce qu'il s'en dit.
    En attendant :
    Si je ramène les nombres à des entiers, j'obtiens le résultat voulu pour ce cas précis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    a=2.4;
    b=24;
    console.log(a/b); //0.09999999999999999
    console.log(a*10/(b*10)); //0.1
     
    a=2.412;
    b=24;
    console.log(a/b); //0.10049999999999999
    console.log(a*1000/(b*1000)); //0.1005
    On peut tenter de généraliser en déterminant le coefficient en fonction du nombre de chiffres après la virgule de l'opérande qui en a le plus.

  3. #3
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Salut,
    j'ai trouvé une explication liée au fonctionnement des processeurs mais forcément de réponse...

    par contre, ta proposition me va complétement !
    Je ne peux avoir qu'une décimale, du coup, je * par 10 d'office !

    Merci beaucoup !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/01/2008, 10h09
  2. [Débutant] Calcul simple
    Par Kstark dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/02/2007, 09h51
  3. un calcul simple (3*2.6)
    Par /* jerome */ dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/07/2006, 10h05
  4. Réponses: 10
    Dernier message: 21/11/2005, 23h05
  5. Calcul simple pour code couleur
    Par Boumeur dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 16/04/2005, 10h51

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