Bibliothèque C - <float.h>

le float.hLe fichier d'en-tête de la bibliothèque standard C contient un ensemble de différentes constantes dépendant de la plate-forme liées aux valeurs à virgule flottante. Ces constantes sont proposées par ANSI C. Elles permettent de réaliser des programmes plus portables. Avant de vérifier toutes les constantes, il est bon de comprendre que le nombre à virgule flottante est composé des quatre éléments suivants -

N ° Sr. Description des composants et des composants
1

S

signe (+/-)

2

b

base ou base de la représentation de l'exposant, 2 pour binaire, 10 pour décimal, 16 pour hexadécimal, et ainsi de suite ...

3

e

exposant, un entier entre un minimum emin et un maximum emax.

4

p

precision, le nombre de chiffres de base b dans le significande.

Sur la base des 4 composants ci-dessus, une virgule flottante aura sa valeur comme suit -

floating-point = ( S ) p x be

or

floating-point = (+/-) precision x baseexponent

Macros de bibliothèque

Les valeurs suivantes sont spécifiques à l'implémentation et définies avec la directive #define, mais ces valeurs ne peuvent pas être inférieures à ce qui est donné ici. Notez que dans tous les cas, FLT fait référence au typefloat, DBL fait référence à double, et LDBL fait référence à long double.

N ° Sr. Macro et description
1

FLT_ROUNDS

Définit le mode d'arrondi pour l'addition en virgule flottante et il peut avoir l'une des valeurs suivantes -

  • -1 - indéterminable
  • 0 - vers zéro
  • 1 - au plus proche
  • 2 - vers l'infini positif
  • 3 - vers l'infini négatif
2

FLT_RADIX 2

Ceci définit la représentation de base de l'exposant. Une base-2 est binaire, base-10 est la représentation décimale normale, base-16 est hexadécimale.

3

FLT_MANT_DIG

DBL_MANT_DIG

LDBL_MANT_DIG

Ces macros définissent le nombre de chiffres dans le nombre (dans la base FLT_RADIX).

4

FLT_DIG 6

DBL_DIG 10

LDBL_DIG 10

Ces macros définissent le nombre maximum de chiffres décimaux (base 10) qui peuvent être représentés sans changement après arrondi.

5

FLT_MIN_EXP

DBL_MIN_EXP

LDBL_MIN_EXP

Ces macros définissent la valeur entière négative minimale pour un exposant en base FLT_RADIX.

6

FLT_MIN_10_EXP -37

DBL_MIN_10_EXP -37

LDBL_MIN_10_EXP -37

Ces macros définissent la valeur entière négative minimale pour un exposant en base 10.

sept

FLT_MAX_EXP

DBL_MAX_EXP

LDBL_MAX_EXP

Ces macros définissent la valeur entière maximale pour un exposant en base FLT_RADIX.

8

FLT_MAX_10_EXP +37

DBL_MAX_10_EXP +37

LDBL_MAX_10_EXP +37

Ces macros définissent la valeur entière maximale pour un exposant en base 10.

9

FLT_MAX 1E+37

DBL_MAX 1E+37

LDBL_MAX 1E+37

Ces macros définissent la valeur maximale en virgule flottante finie.

dix

FLT_EPSILON 1E-5

DBL_EPSILON 1E-9

LDBL_EPSILON 1E-9

Ces macros définissent le chiffre le moins significatif représentable.

11

FLT_MIN 1E-37

DBL_MIN 1E-37

LDBL_MIN 1E-37

Ces macros définissent les valeurs minimales en virgule flottante.

Exemple

L'exemple suivant montre l'utilisation de quelques-unes des 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 le résultat suivant -

The maximum value of float = 3.4028234664e+38
The minimum value of float = 1.1754943508e-38
The number of digits in the number = 7.2996655210e-312