Accès rapide :
Présentation de l'entête <float.h>
Exemple d'utilisation
Eléments fournis par la librairie <float.h>
Notes de portabilité
L'entête <float.h>, ou <cfloat> en C++, expose les caractéristiques des types flottants
proposés par l'implémentation C : float, double et long double. Il ne fournit pas de
fonctions, mais uniquement des macros décrivant la précision, les bornes, les exposants, le mode d'arrondi ou encore la présence
de valeurs particulières comme les NaN et les infinis.
Pour utiliser ces macros, il suffit d'inclure l'entête suivant.
#include <float.h> // <cfloat> en C++
Les valeurs exactes dépendent de l'implémentation. Sur une machine courante respectant les formats binaires ISO/IEC 60559, un
float correspond généralement au format binary32 et un double au format binary64. Le standard C ne
force cependant pas toutes les architectures à utiliser ces formats.
<float.h>.
L'exemple suivant affiche quelques caractéristiques classiques des types float et double.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <float.h> #include <stdio.h> #include <stdlib.h> int main() { printf( "FLT_RADIX == %d\n", FLT_RADIX ); printf( "FLT_DIG == %d\n", FLT_DIG ); printf( "DBL_DIG == %d\n", DBL_DIG ); printf( "FLT_EPSILON == %.9g\n", FLT_EPSILON ); printf( "DBL_EPSILON == %.17g\n", DBL_EPSILON ); printf( "FLT_MAX == %.9e\n", FLT_MAX ); printf( "DBL_MAX == %.17e\n", DBL_MAX ); return EXIT_SUCCESS; } |
Sur une plate-forme courante, vous pouvez obtenir un affichage proche de celui-ci.
FLT_RADIX == 2 FLT_DIG == 6 DBL_DIG == 15 FLT_EPSILON == 1.1920929e-07 DBL_EPSILON == 2.2204460492503131e-16 FLT_MAX == 3.402823466e+38 DBL_MAX == 1.79769313486231571e+308
| Nom | Description |
|---|---|
__STDC_VERSION_FLOAT_H__ (C23) |
Version de l'entête <float.h>. |
FLT_ROUNDS, FLT_EVAL_METHOD, FLT_RADIX |
Macros décrivant l'arrondi, les formats d'évaluation et la base utilisée par les flottants standards. |
FLT_DIG, DBL_DIG, LDBL_DIG... |
Macros de précision : chiffres significatifs, chiffres de conversion et significande. |
FLT_MIN, DBL_MAX, LDBL_EPSILON... |
Macros de bornes, d'exposants, de plus grandes valeurs finies et d'epsilon. |
FLT_TRUE_MIN, FLT_HAS_SUBNORM... (C11/C23) |
Macros liées aux nombres subnormaux. |
FLT_SNAN, INFINITY, NAN... (C23) |
Macros liées à IEEE 60559, aux NaN et aux infinis. |
DEC32_MAX, DEC64_MIN, DEC128_EPSILON... (C23) |
Macros optionnelles pour les flottants décimaux ISO/IEC 60559. |
Les macros DECIMAL_DIG et FLT_HAS_SUBNORM / DBL_HAS_SUBNORM /
LDBL_HAS_SUBNORM sont considérées comme obsolescentes en C23. Les macros propres aux flottants décimaux
ne sont disponibles que si l'implémentation définit __STDC_IEC_60559_DFP__. La macro
CR_DECIMAL_DIG n'est proposée que si le code demande explicitement les extensions IEC 60559 avant
l'inclusion de <float.h>.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :