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 :

< tr>< td>e
ComposantDescription du composant
SSymbole ( +/- )
bLa 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
组件组件描述
S符号 ( +/- )
b指数表示的基数,2 表示二进制,10 表示十进制,16 表示十六进制,等等...
e指数,一个介于最小值 emin 和最大值 emax 之间的整数。
p精度,基数 b 的有效位数
emin<🎜> et la valeur maximale<🎜>emax Un entier entre <🎜>.
pPré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.

MacroDescription
FLT_ROUNDSDéfinissez le mode d'arrondi de l'addition en virgule flottante, qui peut être l'une des valeurs suivantes :
  • 描述
    FLT_ROUNDS定义浮点加法的舍入模式,它可以是下列任何一个值:
    • -1 - 无法确定

    • 0 - 趋向于零

    • 1 - 去最近的值

    • 2 - 趋向于正无穷

    • 3 - 趋向于负无穷

    FLT_RADIX 2这个宏定义了指数表示的基数。基数 2 表示二进制,基数 10 表示十进制,基数 16 表示十六进制。

    FLT_MANT_DIG

    DBL_MANT_DIG

    LDBL_MANT_DIG

    这些宏定义了 FLT_RADIX 基数中的位数。

    FLT_DIG 6

    DBL_DIG 10

    LDBL_DIG 10

    这些宏定义了舍入后不会改变表示的十进制数字的最大值(基数 10)。

    FLT_MIN_EXP

    DBL_MIN_EXP

    LDBL_MIN_EXP

    这些宏定义了基数为 FLT_RADIX 时的指数的最小负整数值。

    FLT_MIN_10_EXP -37

    DBL_MIN_10_EXP -37

    LDBL_MIN_10_EXP -37

    这些宏定义了基数为 10 时的指数的最小负整数值。

    FLT_MAX_EXP

    DBL_MAX_EXP

    LDBL_MAX_EXP

    这些宏定义了基数为 FLT_RADIX 时的指数的最大整数值。

    FLT_MAX_10_EXP +37

    DBL_MAX_10_EXP +37

    LDBL_MAX_10_EXP +37

    这些宏定义了基数为 10 时的指数的最大整数值。

    FLT_MAX 1E+37

    DBL_MAX 1E+37

    LDBL_MAX 1E+37

    这些宏定义最大的有限浮点值。

    FLT_EPSILON 1E-5

    DBL_EPSILON 1E-9

    LDBL_EPSILON 1E-9

    这些宏定义了可表示的最小有效数字。

    FLT_MIN 1E-37

    DBL_MIN 1E-37

    LDBL_MIN 1E-37

    这些宏定义了最小的浮点值。
    -1 - Impossible de déterminer

  • 0 - Vers zéro

  • 1 - Aller à la valeur la plus proche

  • 2 - tend vers l'infini positif
  • <🎜>3 - tend vers l'infini négatif<🎜>
FLT_RADIX 2Cette 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.
<🎜>Exemple<🎜><🎜>L'exemple suivant démontre l'utilisation de certaines constantes définies dans le fichier float.h. <🎜>
#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
<🎜>