Logo OnetipadayOnetipaday

0,1 + 0,2 ne donne pas 0,3 pour un ordinateur

Informatique

Un problème de base, au sens propre

Dans la plupart des langages, 0.1 + 0.2 renvoie 0.30000000000000004. Ce n'est pas un bug, c'est une conséquence du codage des nombres.

Un ordinateur travaille en base 2. Or 0,1 n'admet pas d'écriture binaire finie, exactement comme 1/3 n'admet pas d'écriture décimale finie : 0,3333… La machine stocke donc une approximation, et les erreurs s'additionnent.

Deux règles pratiques en découlent :

  • ne jamais tester l'égalité de deux nombres à virgule flottante ; comparer leur écart à une tolérance ;
  • pour de l'argent, compter en centimes entiers plutôt qu'en euros décimaux.

Au programme de SNT en 2de et de NSI, cette notion explique une bonne part des bugs financiers réels.