#include <float.h> // <cfloat> en C++
C23 rapproche davantage <float.h> du modèle ISO/IEC 60559 en exposant des macros permettant de tester
la compatibilité des formats et de produire certaines valeurs spéciales. Les macros INFINITY et NAN
existent aussi dans <math.h>. Leur utilisation via
<float.h> est considérée comme obsolescente : pour du nouveau code, préférez <math.h>.
| Macro | Rôle |
|---|---|
FLT_IS_IEC_60559 (C23) |
Indique si float a la précision et l'étendue d'un format ISO/IEC 60559. |
DBL_IS_IEC_60559 (C23) |
Indique si double a la précision et l'étendue d'un format ISO/IEC 60559. |
LDBL_IS_IEC_60559 (C23) |
Indique si long double a la précision et l'étendue d'un format ISO/IEC 60559. |
FLT_SNAN (C23) |
NaN signalant de type float, si ce type en supporte. |
DBL_SNAN (C23) |
NaN signalant de type double, si ce type en supporte. |
LDBL_SNAN (C23) |
NaN signalant de type long double, si ce type en supporte. |
INFINITY (C23) |
Infini positif de type float, si l'implémentation le supporte. Préférez son inclusion via <math.h>. |
NAN (C23) |
NaN silencieux de type float, si l'implémentation le supporte. Préférez son inclusion via <math.h>. |
Le programme suivant utilise les macros de compatibilité ISO/IEC 60559 quand elles sont disponibles.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <float.h> #include <stdio.h> int main() { #ifdef FLT_IS_IEC_60559 printf( "FLT_IS_IEC_60559 == %d\n", FLT_IS_IEC_60559 ); #endif #ifdef DBL_IS_IEC_60559 printf( "DBL_IS_IEC_60559 == %d\n", DBL_IS_IEC_60559 ); #endif #ifdef INFINITY printf( "INFINITY == %f\n", INFINITY ); #endif return 0; } |
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 :