APPRENEZ À VOTRE RYTHME

Pourquoi 0,1 + 0,2 ne donne pas 0,3 sur un ordinateur

Publié le

Si vous écrivez 0.1 + 0.2 en JavaScript ou en Python, le résultat est 0.30000000000000004, et non 0,3. Cela se produit sur n’importe quel ordinateur, car il stocke les décimaux sous forme de fractions de dénominateur 2, 4, 8, 16… et 0,1 ne peut pas s’écrire ainsi. Le calcul avec des fractions, 1/10 + 2/10, donne bien 3/10 et ne perd rien.

Exemple résolu : la même somme avec des fractions

Additionnez 0,1 et 0,2 sans passer par le binaire.

  1. Écrivez chaque décimal sous forme de fraction. 0,1 = 1/10 et 0,2 = 2/10.
  2. Additionnez les numérateurs. Les dénominateurs sont déjà identiques : 1 + 2 = 3.
  3. Gardez le dénominateur. Le résultat ne peut pas être simplifié.

Résultat : 0,3, sans erreur.

Vérification : 3/10 font trois dixièmes, et 0,1 + 0,2 font aussi trois dixièmes.

Pour convertir n’importe quel décimal en fraction, utilisez l’outil décimal en fraction, qui part des chiffres que vous avez saisis.

Ce que l’ordinateur stocke réellement

Les langages de programmation utilisent presque toujours des nombres à virgule flottante en double précision (IEEE 754). Chacun est une fraction dont le dénominateur est une puissance de 2. Quand vous écrivez 0,1, le programme stocke la plus proche : 3602879701896397/2⁵⁵, qui vaut 0,1000000000000000055511151231257827… C’est un peu plus que 0,1. La documentation de Python indique que ce qui est stocké pour 0.1 est la fraction binaire 3602879701896397 / 2**55, proche de 1/10 mais pas égale.

L’écran arrondit à l’affichage, c’est pourquoi 0.1 semble correct. Si vous demandez davantage de chiffres, la différence apparaît.

Ce qui est stocké face à la valeur décimale que vous écrivez
Vous écrivezValeur stockéeÉcart avec ce qui est écrit
0,10,1000000000000000055511…+5,6 × 10⁻¹⁸
0,20,2000000000000000111022…+1,1 × 10⁻¹⁷
0,30,2999999999999999888977…−1,1 × 10⁻¹⁷
Somme stockée de 0,1 + 0,20,3000000000000000444089…+4,4 × 10⁻¹⁷ par rapport à 0,3

Le 0,2 stocké est exactement le double du 0,1 stocké, il porte donc le double de l’erreur. Lors de l’addition, le résultat est arrondi une nouvelle fois à la fraction binaire la plus proche, et ce nombre est différent de celui qui a été stocké pour 0,3. Ces deux nombres se trouvent de part et d’autre de 3/10, et c’est pourquoi la comparaison 0.1 + 0.2 == 0.3 est fausse. L’addition de l’ordinateur est correcte ; ce sont les nombres de départ qui diffèrent.

Pourquoi 1/10 ne tient pas en binaire

Une fraction irréductible a une écriture finie dans une base lorsque son dénominateur n’utilise que les facteurs premiers de cette base. En base 10, ce sont 2 et 5. En base 2, seulement 2. Le dénominateur 10 contient un 5 : en binaire, l’écriture se répète donc sans fin, 0,000110011…₂, avec le bloc 0011. C’est le même phénomène qui fait de 1/3 le nombre 0,333… en base 10, avec un autre nombre premier et une autre base. Le guide sur les fractions ayant un nombre décimal exact développe la règle en base 10, et celui sur les décimaux finis et périodiques explique comment s’écrit une période.

Pour distinguer les deux cas, regardez le dénominateur après simplification.

Décimaux que l’ordinateur stocke sans erreur et décimaux qu’il ne stocke pas
DécimalFractionExact en binaire ?
0,51/2Oui, dénominateur 2
0,1251/8Oui, dénominateur 8 = 2³
0,6255/8Oui, 0,101₂
0,21/5Non, le dénominateur 5 n’est pas une puissance de 2
0,33/10Non, le dénominateur 10 contient un 5
0,753/4Oui, dénominateur 4

Parmi les dixièmes, seul 0,5 est stocké sans erreur ; les quarts et les huitièmes aussi. Pour voir l’écriture décimale de n’importe quelle fraction et savoir s’il se termine ou se répète, utilisez l’outil fraction en décimal.

Que faire en pratique

Il existe trois solutions, selon votre besoin.

Pour des montants d’argent, une autre option consiste à compter en centimes avec des nombres entiers et à ne diviser par 100 qu’à l’affichage. Les entiers jusqu’à 2⁵³ sont stockés sans perte, donc chaque addition est exacte. Le choix concret dépend de chaque système.

La calculatrice de ce site suit le même principe : elle opère sur des entiers et des fractions, de sorte que 0,1 + 0,2 donne 3/10 dans la calculatrice de fractions. L’écriture décimale que vous voyez n’est qu’une présentation du résultat, et la fraction est la valeur de référence. La méthodologie explique comment les calculs sont réalisés et vérifiés.

Source : documentation de Python en français, Floating-Point Arithmetic: Issues and Limitations (consultée le 16 octobre 2026). Les valeurs du tableau ont été vérifiées par un calcul exact avec des fractions.

Étape suivante

Articles de blog sur les fractions Le blog sur les fractions en quatre parcours : préparer un cours, s’exercer à la maison, comprendre un calcul du quotidien ou lire une…
Signaler une erreurComment nous traitons les corrections

Utiliser la calculatrice de fractions

VOTRE CALCULATRICE À PORTÉE DE MAIN

Enregistrer la calculatrice

Ouvrez le menu du navigateur et choisissez « Installer l’application » ou « Ajouter à l’écran d’accueil ». Vous pouvez aussi ajouter cette page aux favoris.