Tu découvres simplement que les nombres décimaux non entiers ne sont pas représentables nativement par un ordinateur de manière exact. Pour des raisons d'optimisation, la quasi-totalité des langages de programmation (qui se basent sur le comportement du processeur) utilisent une représentation de ces nombres comme flottant qui n'ont pas une précision infinie.
Ça ne suffit pas à expliquer l'erreur, parce qu'en décimal, 2, 1,8 et 0,2 sont représentables sans erreur. La source du problème, c'est que les nombres sont représentés en binaire à virgule flottante. Ainsi, 0,5 sera représenté comme 0,1 en base 2, sans erreur. En revanche, 1,8 et 0,2 ne sont pas représentables sans erreur en base 2, leur développement après la virgule étant infini.
[^] # Re: Rien de surprenant
Posté par 🚲 Tanguy Ortolo (site web personnel) . En réponse au journal [Humour] vers un monde différent. Évalué à 9.
Ça ne suffit pas à expliquer l'erreur, parce qu'en décimal, 2, 1,8 et 0,2 sont représentables sans erreur. La source du problème, c'est que les nombres sont représentés en binaire à virgule flottante. Ainsi, 0,5 sera représenté comme 0,1 en base 2, sans erreur. En revanche, 1,8 et 0,2 ne sont pas représentables sans erreur en base 2, leur développement après la virgule étant infini.