Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de décimales

0.3-0.2-0.1= .... 5.55112e-17!

Sujet résolu
    3 juin 2008 à 20:01:36

    Bonsoir

    voilà, j'ai un problème avec les décimales...
    il semble que 0.3-0.2-0.1 ne soit pas exactement égale à zéro... mais à 5.55112e-17! ... ce qui est un gros problème pour les égalités!

    J'ai essayé avec des variables double et float, mais rien n'y fait.

    Apparemment ce problème est courant dans les langages de programmations :
    http://matlab.developpez.com/faq/?page [...] res_flottants

    Existe-il une solution (un équivalent c++ du eps qu'il propose sur developpez pour matlab ou autre)??

    Merci de vos réponses!!

    • Partager sur Facebook
    • Partager sur Twitter
      3 juin 2008 à 20:35:48

      De plus montre ton code on sais jamais ça pourrais servir.
      • Partager sur Facebook
      • Partager sur Twitter
      :)
        3 juin 2008 à 20:46:25

        C'est pour ça qu'on ne devrait jamais faire des tests du type :

        double a == double b
        • Partager sur Facebook
        • Partager sur Twitter
        Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
          3 juin 2008 à 21:05:53

          Merci pour le lien Laurent!!

          Citation : moii

          De plus montre ton code on sais jamais ça pourrais servir.



          Ben c'est un bête code teste :
          std::ofstream fichier("fichier.doc", std::ios::trunc );
          
          fichier<<0.3-0.2-0.1<<std::endl;
          
          double nombre=0.3-0.2-0.1;
          fichier<<nombre<<std::endl;
          
          fichier.close();
          


          et dans le fichier on a :
          5.55112e-17
          5.55112e-17

          Citation : Nanoc

          C'est pour ça qu'on ne devrait jamais faire des tests du type :

          double a == double b



          Oui, surtout que le problème est plus général que ça : j'avais déjà eu un truc du genre :

          double nb1=0.7;
          int nb2=10,nb3;
          nb3=nb2*nb1;
          


          avec nb3=6 (en réalité 6.99999999, mais comme c'est un int, il m'indiquait que 6...)
          En même temps j'aurai dû utiliser que des double, mais bon, je débutais à ce moment-là...

          • Partager sur Facebook
          • Partager sur Twitter

          Problème de décimales

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown