Suite au précédent billet sur la précision d’un double en java

Certaines personnes n’arrive pas à comprendre pourquoi 0,1 ne peut pas être représenté en java par exemple :

System.out.println(1.3-1.2);

Et la c’est le drame !!! le résultat n’est pas 0.1 mais 0.10000000000000009

Il est impossible de représenter exactement 0.1 ou n’importe quelle puissance négative de 10 au moyen d’un float ou d’un double d’aprés le format IEEE754.

C’est pas beau l’informatique ?

Quelques Documents intéressants sur le sujet :

Rapport de recherche Arithmétique flottante

The pitfalls of verifying floating-point computations

What Every Computer Scientist Should Know About Floating-Point Arithmetic