Représentation d'un nombre à virgule (IEEE 754)

Pourquoi 0,1 + 0,2 ne donne-t-il pas exactement 0,3 en programmation ? Saisissez 0,1 et regardez les 64 bits qui le représentent vraiment.

Bit de signe
0 (positif)
Exposant (11 bits)
01111111011 (1019, décalage -4)
Mantisse (52 bits)
1001100110011001100110011001100110011001100110011010
Hexadécimal
0x3FB999999999999A
Valeur réellement stockée
0,1000000000000000055511151231257827021182

La plupart des décimaux, comme 0,1, n'ont pas d'écriture exacte en binaire : l'ordinateur stocke la valeur représentable la plus proche.

Comment ça se calcule

Un nombre flottant est stocké sous la forme (-1)^signe × 1,mantisse × 2^(exposant - décalage). En double précision : 1 bit de signe, 11 d'exposant (décalage 1023) et 52 de mantisse. En simple précision : 1, 8 (décalage 127) et 23. La valeur stockée est la plus proche de votre nombre parmi celles représentables.

Questions fréquentes

Pourquoi 0,1 n'est-il pas exact ?

Parce qu'en binaire 0,1 a un développement infini, comme 1/3 en décimal. Il faut donc l'arrondir à 52 bits de mantisse.

Comment comparer deux flottants ?

Éviter l'égalité stricte et accepter une petite tolérance, ou calculer en entiers (des centimes plutôt que des euros).

Cas fréquents

Des exemples déjà remplis, avec leur explication :

Intégrer cet outil sur votre site

Copiez ce code pour afficher l'outil sur votre site ou votre blog. L'outil s'exécute dans le navigateur du visiteur, sans cookie ni suivi, et affiche un lien « Propulsé par Calepin Binaire » vers cette page.

Aperçu de la version intégrable : https://mircode.org/embed/representation-flottant-ieee-754-double/

Les résultats sont fournis à titre indicatif. Pour aller plus loin, découvrez les sites de la catégorie Sandbox et casse-têtes de l'annuaire et lisez le guide de cette catégorie.

Autres outils

Voir les 35 outils