Adloun

Pourquoi 0,1 n'existe pas exactement

Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 2 — Variables, types et affectations · Les types de données

Énoncé

Afficher format(0.1, '.20f'). Expliquer ce que l'on voit, et faire le lien avec l'écriture de en base .

Corrigé

print(format(0.1, '.20f'))
# 0.10000000000000000555

La machine ne stocke pas mais un nombre binaire très proche. La raison est arithmétique : en base , une fraction n'a une écriture finie que si son dénominateur réduit est une puissance de . Or et : le facteur interdit une écriture binaire finie, exactement comme le facteur de interdit une écriture décimale finie.

En revanche et sont stockés exactement. On peut le vérifier :

print(format(0.5, '.20f'))   # 0.50000000000000000000

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.