Bibliothèque standard C - <float.h>
Introduction
Le fichier d'en-tête float.h de la bibliothèque standard C contient un ensemble de constantes dépendant de la plate-forme liées aux valeurs à virgule flottante. Ces constantes ont été introduites par ANSI C, qui rend les programmes plus portables. Avant d'expliquer ces constantes, il est préférable de comprendre que les nombres à virgule flottante sont composés des quatre éléments suivants :
Composant | Description du composant |
---|---|
S | Symbole ( +/- ) | tr>
b | La base de l'exposant, 2 représente le binaire, 10 représente le décimal, 16 représente l'hexadécimal, etc... | Exposant, un entre la valeur minimale
|
p | Précision, le nombre de chiffres significatifs en base b |
Sur la base des 4 composants ci-dessus, la valeur d'un nombre à virgule flottante est la suivante :
virgule flottante = ( S ) p x be
ou
virgule flottante = (+/-) précision x baseexposant
macro de bibliothèque
Les valeurs suivantes sont spécifiques à l'implémentation et définies via les directives #define, ces valeurs ne doivent pas être inférieures aux valeurs indiquées ci-dessous. Notez que toutes les instances de FLT font référence au type float, DBL au type double et LDBL au type long double.
Macro | Description | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FLT_ROUNDS | Définissez le mode d'arrondi de l'addition en virgule flottante, qui peut être l'une des valeurs suivantes :
| tr> ||||||||||||||||||||||||
FLT_RADIX 2 | Cette macro définit la base de représentation des exposants. La base 2 représente le binaire, la base 10 représente le décimal et la base 16 représente l'hexadécimal. | ||||||||||||||||||||||||
<🎜>FLT_MANT_DIG<🎜><🎜>DBL_MANT_DIG<🎜><🎜>LDBL_MANT_DIG<🎜> | Ces macros définissent le numéro de base FLT_RADIX de chiffres. | ||||||||||||||||||||||||
<🎜>FLT_DIG 6<🎜><🎜>DBL_DIG 10<🎜><🎜>LDBL_DIG 10<🎜> | Ces macros définissent l'arrondi Saisie ne modifie pas la valeur maximale du nombre décimal représenté (base 10). | ||||||||||||||||||||||||
<🎜>FLT_MIN_EXP<🎜><🎜>DBL_MIN_EXP<🎜><🎜>LDBL_MIN_EXP<🎜> | Ces macros définissent quand la base est FLT_RADIX La plus petite valeur entière négative de l'exposant. | ||||||||||||||||||||||||
<🎜>FLT_MIN_10_EXP -37<🎜><🎜>DBL_MIN_10_EXP -37<🎜><🎜>LDBL_MIN_10_EXP -37<🎜> | Ces macros Définit la plus petite valeur entière négative pour un exposant en base 10. | ||||||||||||||||||||||||
<🎜>FLT_MAX_EXP<🎜><🎜>DBL_MAX_EXP<🎜><🎜>LDBL_MAX_EXP<🎜> | Ces macros définissent quand la base est FLT_RADIX La valeur entière maximale de l'exposant. | ||||||||||||||||||||||||
<🎜>FLT_MAX_10_EXP +37<🎜><🎜>DBL_MAX_10_EXP +37<🎜><🎜>LDBL_MAX_10_EXP +37<🎜> | Ces macros Définit la valeur entière maximale de l'exposant en base 10. | ||||||||||||||||||||||||
<🎜>FLT_MAX 1E+37<🎜><🎜>DBL_MAX 1E+37<🎜><🎜>LDBL_MAX 1E+37<🎜> | Ces macros définissent la plus grande valeur finie à virgule flottante. | ||||||||||||||||||||||||
<🎜>FLT_EPSILON 1E-5<🎜><🎜>DBL_EPSILON 1E-9<🎜><🎜>LDBL_EPSILON 1E-9<🎜> | Ces macros définissent le plus petit nombre significatif pouvant être représenté. | ||||||||||||||||||||||||
<🎜>FLT_MIN 1E-37<🎜><🎜>DBL_MIN 1E-37<🎜><🎜>LDBL_MIN 1E-37<🎜> | Ces macros définissent la valeur minimale à virgule flottante. |
#include <stdio.h>#include <float.h>int main(){ printf("The maximum value of float = %.10e\n", FLT_MAX); printf("The minimum value of float = %.10e\n", FLT_MIN); printf("The number of digits in the number = %.10e\n", FLT_MANT_DIG);}<🎜> Compilons et exécutons le programme ci-dessus, qui produira les résultats suivants : <🎜>
The maximum value of float = 3.4028234664e+38The minimum value of float = 1.1754943508e-38The number of digits in the number = 7.2996655210e-312<🎜>