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 :
- 0,1 en double précision : pourquoi n'est-il pas exact ?
- 0,5 : un nombre exactement représentable
- 0,1 en simple précision (32 bits)
- Représentation de -2,5 en double précision
Intégrer cet outil sur votre site
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
- 01Combien de bits pour coder N valeursNombre de bits et d'octets pour distinguer N cas
- &|Opérations bit à bit sur deux entiersET, OU, OU exclusif, NON et décalages, en binaire
- ±Complément à deux d'un entier relatifÉcrire un nombre négatif en binaire sur 8, 16 ou 32 bits
- T/FTable de vérité d'une expression logiqueToutes les lignes vrai ou faux de A ET (B OU NON C)
- n!Arrangements, combinaisons et factorielleCompter les tirages possibles, avec ou sans ordre
- rwxPermissions chmod en octal et en rwxPasser de 755 à rwxr-xr-x et inversement