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

  • 0 Comments
  • Filed under: System
  • Précision d’un double en JAVA

    Un petit billet histoire de rappeler que l’informatique c’est bien mais ça a des limites :

    Le format Double en java respecte la Norme IEEE754, qui est un standard de représentation des nombres à virgule flottante en binaire.

    Un Double est codé sur 64 bits soit :

    • 1 bit de signe
    • 11 bits d’exposant (-1023..1024)
    • 52 bits de mantisse

    Pour plus d’information sur la Norme IEEE754

  • 0 Comments
  • Filed under: Java