Les nombres représentables en virgule flottante sont les rationnels exprimables sous la forme
où le signe, et
caractérisent le nombre:
,
,
et
caractérisent le format:
En plus de ces nombres, certains formats flottants peuvent représenter d'autres valeurs:
On remarque que certains nombres flottants peuvent avoir plusieurs représentations, par exemple dans un format où et
le nombre cent a pour représentations possibles
,
et
. Une représentation pour laquelle
est appelée représentation normalisée.
Les nombres avec
, qui donc n'ont pas de représentation normalisée, sont appelés nombre dénormaux ou sous-normaux. Certains formats de flottants n'autorisent pas les nombres dénormaux. En l'absence de dénormaux, la différence entre
et plus petit nombre positif représentable est de
tandis que celle entre ce nombre et le suivant est de
, soit une valeur beaucoup plus petite, ce qui peut poser des problèmes. En présence de dénormaux, la différence entre deux nombres dénormaux successifs est toujours de
. La différence entre deux nombres ayant une représentation normalisée varie.
En passant, depuis bien avant l'usage de représentations en virgule flottante, on utilise les termes de partie fractionnaire ou de mantisse pour . Le terme de mantisse était en particulier utilisé dans le cadre des tables de logarithmes, où la partie entière d'un logarithme est appelé caractéristique. Cette note historique est l'occasion de faire remarquer qu'on peut considérer la représentation en virgule flottante d'un nombre comme une approximation de son logarithme -- l'exposant est la caractéristique du logarithme et la partie significative est proche de sa mantisse.
Tous ces formats ont aussi une représentation pour ,
et des NaN.
A noter que la norme ne définit pas de représentation pour ces formats.
float C | double C | IEEE simple | IEEE double | IEEE étendu
| |
![]() | 24 | 53 | 64
| ||
DIG | 6 | 10 | 6 | 15 | 18
|
![]() | -125 | -1021 | -16381
| ||
MIN_10_EXP | -37 | -37 | -37 | -307 | -4931
|
![]() | 128 | 1024 | 16384
| ||
MAX_10_EXP | 37 | 37 | 38 | 308 | 4932
|
MAX | 1E37 | 1E37 | 3.40E38 | 1.80E308 | 1.19E4932
|
EPSILON | 1E-5 | 1E-9 | 1.19E-7 | 2.22E-16 | 1.08E-19
|
MIN | 1E-37 | 1E-37 | 1.18E-38 | 2.23E-308 | 3.36E-4932
|
Le cas général est une borne inférieure qui est atteinte si l'intervalle des exposants est suffisemment grand. Il s'obtient en remarquant que pour être sûr qu'il n'y a pas de perte dans la conversion décimal en autre base, il faut qu'à tout endroit, l'intervalle entre deux flottants de base soit inférieur à l'intervalle entre deux flottants décimaux de précision
. Le premier vaut au maximum
. Le dernier vaut au minimum
. On va négliger le terme
au dénominateur. On a donc:
Le du cas où
est une puissance de 10 provient du fait que dans ce cas il y a une corrélation entre les minimums et maximums de l'intervalle entre deux flottants entre le cas décimal et le cas base
.
Dans le cas des formats IEEE, les formats simples et étendus sont affectés par l'utilisation de plutôt que d'un
qui aurait mieux correspondu à l'intuition. Dans le cas du format simple, cette bonne inférieure est atteinte, par exemple 9.9999994e-04 ce trouve entre ces deux flottants:
0x1.0624d2p-10 = 9.999993e-04 = 9.99999349e-04
0x1.0624d4p-10 = 9.999995e-04 = 9.99999465e-04
De même pour le format extended, 9.999999999999999998e-04 se trouve entre ces flottants:
0x8.3126e978d4fdf39p-13 = 9.999999999999999997e-04 = 9.99999999999999999747e-04
0x8.3126e978d4fdf3ap-13 = 9.999999999999999999e-04 = 9.99999999999999999853e-04
(le format double a ).