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.50000000000000000000Les 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.