0,8100000000000000000000 + 0,01 = 0,8200000000000010000000 ???

APi -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Avec excel, si j'additionne 0,81 + 0,01, j'obtiens 0,8200000000000010000000

Du moins, j'ai cela si je procède de la sorte
  • dans la case A01, j'écris 0,81 en demandant un affichage avec un maximum de "0"
  • en dessous, dans A02, je fais : =A01+0,01
  • j'obtiens : 0,8200000000000010000000

Pourquoi????
Bien cordialement,

4 réponses

  1. Mike-31 Messages postés 18205 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    C'est un problème relevè depuis pas mal de temps liè au langage binaire, j'ai personnellement posé la question à plusieurs reprises à Microsoft toujours sans réponse sur cette décimale parasite qui s'affiche après la douzième
    j'espère qu'une réponse logique sera un jour apportée en attendant une rectification du logiciel.
    Il faut également signaler que peu de personnes travaillent avec plus d'une dizaine de décimales
    2
    1. APi
       
      Merci pour votre réponse très claire.
      J'ai un peu cherché avant de poser cette question, mais je n'avais pas trouvé de réponse (ma question était mal posée certainement).
      Je ne voulais pas travailler avec 12 décimales, mais je faisais le calcul suivant :

      Colonne A : le temps, qui s'incrémente par valeur de +0,01
      Et je faisais un test : si temps = 3, alors....
      et ma formule ne marchait pas car il ne trouvait pas 10, mais 10,000000000000010000
      (ou un truc comme cela).

      J'ai été obligé de mettre un calcul d'arrondi à 4 chiffres après la virgule pour que ca marche :
      si ( arrondi(temps;4) ) = 10, alors....

      Merci encore.
      0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
     
    Bonjour,

    Curieusement, je n'arrive pas à reproduire cette erreur, que j'utilise l'affichage avec 30 chiffres après la virgule ou un autre type d'affichage.

    Aucune de mes versions d'Excel (2003, 2007, 2010) ne présentent cette anomalie !!!

    Le calcul en virgule flottante génère effectivement des erreurs mais pas de cet ordre de grandeur sur une simple addition !

    Quelle version d'Excel utilises-tu ???
    0
  3. Mike-31 Messages postés 18205 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Ce problème avait été évoqué sur plusieurs forums et connu de Microsoft

    exemple sur cette discussion en 2007 pour laquelle j'avais contacté Microsoft à deux reprises
    https://forums.commentcamarche.net/forum/affich-23338155-excel-2007-2-2-0-0000000000001#top

    ce problème était rencontré sur les versions 2007 et antérieures, je viens de refaire les tests sur 2010 et apparemment ce problème aurait été résolu en partie, parce que j'ai repris un test amusant, en A1 je saisis 0,9 en A2 1,9
    en B1 1 et en B2 2 en C1 la formule =A1-B1 et en C2 A2-B2 qui est la même formule et j'incrémente ces 4 cellules, quelque soit la ligne, la soustraction devrait donner 0,1 quelque soit le nombre de décimales et ben NON
    à la ligne 5 ou en A5 j'ai 4,9 et en B5 j'ai 5 le résultat n'est plus 0,100000 mais 0,0999999999999996
    et plus amusant ligne 17 ou en A17 j'ai 16,9 et en B17 la valeur 17 en C17 l'erreur réapparait en 15 éme position 0,100000000000001000

    Il est vrai que peu de personnes travaillent avec autant de décimales, mais ligne 5 tout de même ce résultat est surprenant au delà de 15 décimales et plus surprenant si on fait 0,1 ce qui devrait être le résultat de 4,9-5 moins la valeur obtenue en C5 soit 0,0999999999999996 le résultat théorique devrait être 0 et ben non il reste toujours un reliquat 0,0000000000000036082 ce qui peut poser problème pour les scientifiques
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. APi
       
      ma version d'Excel est : 2010 / version 14.0.7147.5001 32 bits.
      Cela peut certes poser des pbs à des scientifiques, mais tout bêtement si on fait un test : suis-arrivé à t = 3 secondes, en partant de 0 par incréments de 0,01 s .... excel ne trouve pas 3 secondes, mais 3,0000000000001 (ou qlq chose de ressemblant....).
      Merci pour vos réponses, qui me confirment que je n'avais pas de virus particulier dans mon ordi ou dans excel... du moins, que beaucoup ont le même "virus" que moi...
      Cordialement.
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
       
      Bonjour Mike,

      Même constat, le casse tête des arrondis en virgule flottante !

      Curieusement (au format standard) :
      = -5 + 4,9 + 0,1 renvoie 3,60822E-16 

      alors que :
      = -5 + 0,1 + 4,9 renvoie 0 


      Cordialement
      Patrice
      0