quand j'exécute
print(35 * 10**-5)
en python, je trouve 0.00035000000000000005
Je suis perplexe.
critor wrote: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 mantisseMest 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 :Il n'est pas rare donc que cela introduise des erreurs d'approximation sur les toutes dernières décimales.
- saisie décimale → virgule flottante binaire
- puis le calcul est effectué en binaire
- puis enfin résultat → décimal pour l'affichage
Surtout quand il n'y a pas d'équivalent exact entre ces deux bases.
Return to Maths, physique, informatique et autre...
Users browsing this forum: No registered users and 2 guests