Bonjour.
Le Python ne travaille pas en base 10/décimale, et ne gère qu'un minuscule sous-ensemble des nombres réels.
Les nombres non entiers sont représentés en Python en virgule flottante binaire, soit au format suivant :
$mathjax$\pm M\times 2^{E-E_{min}}$mathjax$
avec
$mathjax$M\in [1;2[$mathjax$
La mantisse
M est codée sur 53 bits
(plus 1 bit de signe).
Bref, quand on demande un calcul en Python il y a une double conversion derrière :
- saisie décimale → virgule flottante binaire
- puis le calcul est effectué en binaire
- puis enfin résultat → décimal pour l'affichage
Il n'est pas rare donc que cela introduise des erreurs d'approximation sur les toutes dernières décimales.
Surtout quand il n'y a pas d'équivalent exact entre ces deux bases.