Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Macros de précision de <float.h>

Les macros d'évaluation Les macros de bornes


Entête à inclure

#include <float.h>  // <cfloat> en C++

Macros de précision

Ces macros répondent à une question simple : combien de chiffres significatifs peut-on manipuler sans perdre l'information portée par le type flottant ? Il faut distinguer les chiffres de la significande dans la base interne et les chiffres décimaux utiles pour les conversions vers ou depuis du texte.

MacroRôle
FLT_MANT_DIG Nombre de chiffres en base FLT_RADIX dans la significande d'un float.
DBL_MANT_DIG Nombre de chiffres en base FLT_RADIX dans la significande d'un double.
LDBL_MANT_DIG Nombre de chiffres en base FLT_RADIX dans la significande d'un long double.
FLT_DIG Nombre de chiffres décimaux conservables sans changement lors d'un aller-retour vers float.
DBL_DIG Nombre de chiffres décimaux conservables sans changement lors d'un aller-retour vers double.
LDBL_DIG Nombre de chiffres décimaux conservables sans changement lors d'un aller-retour vers long double.
FLT_DECIMAL_DIG (C11) Nombre de chiffres décimaux permettant un aller-retour sûr pour un float.
DBL_DECIMAL_DIG (C11) Nombre de chiffres décimaux permettant un aller-retour sûr pour un double.
LDBL_DECIMAL_DIG (C11) Nombre de chiffres décimaux permettant un aller-retour sûr pour un long double.
DECIMAL_DIG (C99) Nombre de chiffres pour le plus large type flottant supporté. Cette macro est obsolescente en C23.
CR_DECIMAL_DIG (C23) Nombre de chiffres à utiliser pour les conversions correctement arrondies, si l'extension IEC 60559 est demandée avant l'inclusion de <float.h>.
La macro CR_DECIMAL_DIG n'est définie que si __STDC_WANT_IEC_60559_EXT__ est définie avant la première inclusion de <float.h>.

Exemple de code

L'exemple suivant affiche les chiffres significatifs conservables pour les trois types flottants standards.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
#include <float.h>
#include <stdio.h>

int main() {

    printf( "FLT_DIG          == %d\n", FLT_DIG );
    printf( "DBL_DIG          == %d\n", DBL_DIG );
    printf( "LDBL_DIG         == %d\n", LDBL_DIG );
    printf( "FLT_DECIMAL_DIG  == %d\n", FLT_DECIMAL_DIG );
    printf( "DBL_DECIMAL_DIG  == %d\n", DBL_DECIMAL_DIG );
    printf( "LDBL_DECIMAL_DIG == %d\n", LDBL_DECIMAL_DIG );

    return 0;
}
Précision des types flottants

Sujets connexes

Macros de bornes
printf


Les macros d'évaluation Les macros de bornes




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé