Calculateur de précision en virgule flottante
Données
| Format | Double précision (64 bits) |
|---|---|
| Valeur | 1 000 |
Calculateur de précision en virgule flottante
Déterminer l’epsilon machine, le nombre de chiffres décimaux significatifs et l’espacement des valeurs représentables (ULP) pour les formats IEEE 754 en demi-, simple, double et quadruple précision.
Données
Format et valeur
Résultats
Saisissez une valeur pour afficher les résultats.
Précision
Détails
La précision en virgule flottante
Les ordinateurs stockent les nombres réels sur un nombre fini de bits, si bien que la plupart des valeurs ne sont conservées que de façon approchée. Ce calculateur indique la précision des formats binaires IEEE 754 — demi-, simple, double et quadruple précision — en calculant l’epsilon machine, le nombre de chiffres décimaux fiables et l’espacement entre les valeurs représentables (l’ULP) à une valeur choisie. Ensemble, ces grandeurs expliquent pourquoi l’arithmétique en virgule flottante est précise sans être exacte.
Comment un flottant code un nombre
Un nombre IEEE 754 s’écrit comme un signe, une mantisse (les chiffres significatifs) et un exposant qui la met à l’échelle par une puissance de deux — à la manière de la notation scientifique en base 2. Chaque format fixe le nombre de bits attribués à la mantisse : la demi-précision dispose de 11 bits de mantisse, la simple précision de 24, la double précision de 53 et la quadruple précision de 113 (chaque décompte inclut un bit de poids fort implicite). Plus la mantisse compte de bits, plus la résolution est fine.
Epsilon machine
La mesure la plus claire de la résolution est l’epsilon machine, l’écart entre 1,0 et le nombre représentable immédiatement supérieur :
où est le nombre de bits de mantisse. Pour la double précision, . C’est une borne relative : tout nombre réel est stocké avec une erreur relative au plus égale à . Le nombre fiable de chiffres décimaux significatifs en découle directement, soit — environ 15,7 pour la double précision.
ULP : un espacement qui croît avec l’ordre de grandeur
L’epsilon machine décrit l’espacement au voisinage de 1,0, mais les nombres en virgule flottante ne sont pas espacés régulièrement. L’écart entre deux valeurs représentables consécutives, l’unité en dernière position (ULP), varie avec l’ordre de grandeur :
Près de 1 l’espacement vaut l’epsilon machine ; près de 1 000 il est environ mille fois plus grand. C’est pourquoi la virgule flottante conserve une précision relative constante tout en perdant en précision absolue à mesure que les nombres augmentent.
Exemple résolu
Prenons la double précision et la valeur 1000. L’exposant vaut , donc :
ULP(1000)=29−52=2−43≈1,14×10−13La plus grande erreur d’arrondi au voisinage de 1000 en vaut la moitié, soit environ . Un double peut donc distinguer 1000 de 1000,0000000000001 mais pas d’une valeur qui en diffère au seizième chiffre significatif.
Pourquoi 0,1 n’est pas exact
La virgule flottante binaire ne peut représenter que des sommes de puissances de deux, et 0,1 n’a pas de développement binaire fini — tout comme un tiers n’en a pas en décimal. Il est donc arrondi à la valeur représentable la plus proche, ce qui explique pourquoi 0.1 + 0.2 n’est pas exactement égal à 0.3 dans la plupart des langages. L’écart est de l’ordre de l’epsilon machine et généralement sans conséquence, mais il s’accumule au cours de longs calculs et c’est la raison pour laquelle l’argent est souvent stocké sous forme d’entiers ou dans un type décimal plutôt que comme un flottant. Pour savoir comment les entiers eux-mêmes sont codés en binaire, voir le Calculateur de complément à deux.
Questions fréquentes (FAQ)
Qu’est-ce que l’epsilon machine ?
L’epsilon machine est l’écart entre 1,0 et le nombre en virgule flottante immédiatement supérieur à 1,0. Il vaut 2 élevé à la puissance de moins le nombre de bits fractionnaires de la mantisse — pour la double précision, soit 2⁻⁵², environ 2,22 × 10⁻¹⁶.
L’epsilon machine mesure la résolution relative du format : tout nombre réel est stocké avec une erreur relative au plus égale à la moitié de l’epsilon. C’est l’étalon de référence pour estimer le nombre de chiffres qu’un format peut porter de manière fiable.
Qu’est-ce qu’un ULP ?
ULP signifie « unité en dernière position » — la distance entre un nombre en virgule flottante et le nombre représentable immédiatement supérieur.
Contrairement à l’epsilon machine, qui est fixe, l’ULP croît avec l’ordre de grandeur : près de 1 l’espacement vaut l’epsilon machine, près de 1 000 il est environ mille fois plus grand, et près d’un milliard plus grand encore. Comme l’espacement varie avec la valeur, les nombres en virgule flottante conservent une précision relative à peu près constante sur toute leur plage, tandis que la précision absolue se dégrade à mesure que les nombres augmentent.
Pourquoi 0,1 ne peut-il pas être stocké exactement ?
La virgule flottante binaire ne peut représenter que des sommes de puissances de deux. La fraction décimale 0,1 n’a pas de développement binaire fini — tout comme un tiers n’a pas de développement décimal fini — elle est donc arrondie à la valeur représentable la plus proche, légèrement supérieure à 0,1.
C’est pourquoi 0,1 + 0,2 n’est pas exactement égal à 0,3 dans la plupart des langages. L’erreur est minuscule, de l’ordre de l’epsilon machine, mais elle s’accumule au fil de nombreuses opérations ; c’est la raison pour laquelle les valeurs monétaires sont souvent stockées sous forme d’entiers ou dans des types décimaux.
Combien de chiffres décimaux chaque format conserve-t-il ?
Le nombre fiable de chiffres décimaux significatifs vaut approximativement le nombre de bits fractionnaires de la mantisse multiplié par le logarithme de 2 (environ 0,301). La demi-précision donne à peu près 3 chiffres, la simple précision environ 7, la double précision environ 15 à 16, et la quadruple précision environ 34.
Ce sont les chiffres que l’on peut convertir et reconvertir sans perte ; afficher davantage de chiffres révèle les artefacts d’arrondi de la représentation binaire plutôt qu’une précision réelle.
Recommandations
Calculateur de complément à deux
Convertissez un entier signé en sa représentation binaire et hexadécimale en complément à deux, ou décodez une chaîne binaire pour retrouver sa valeur décimale signée. Largeurs de registre : 8, 16, 32 ou 64 bits.