C-Bibliothek - <float.h>

Das float.hDie Header-Datei der C-Standardbibliothek enthält eine Reihe verschiedener plattformabhängiger Konstanten, die sich auf Gleitkommawerte beziehen. Diese Konstanten werden von ANSI C vorgeschlagen. Sie ermöglichen die Erstellung portablerer Programme. Bevor Sie alle Konstanten überprüfen, sollten Sie verstehen, dass die Gleitkommazahl aus den folgenden vier Elementen besteht:

Sr.Nr. Komponente & Komponentenbeschreibung
1

S

Zeichen (+/-)

2

b

Basis oder Radix der Exponentendarstellung, 2 für Binär, 10 für Dezimal, 16 für Hexadezimal und so weiter ...

3

e

Exponent, eine ganze Zahl zwischen einem Minimum emin und ein Maximum emax.

4

p

Genauigkeit, die Anzahl der Basis-b-Ziffern im Signifikanten.

Basierend auf den obigen 4 Komponenten hat ein Gleitkomma seinen Wert wie folgt:

floating-point = ( S ) p x be

or

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

Bibliotheksmakros

Die folgenden Werte sind implementierungsspezifisch und werden mit der Direktive #define definiert. Diese Werte dürfen jedoch nicht niedriger sein als hier angegeben. Beachten Sie, dass sich FLT in allen Fällen auf den Typ beziehtfloat, DBL bezieht sich auf doubleund LDBL bezieht sich auf long double.

Sr.Nr. Makro & Beschreibung
1

FLT_ROUNDS

Definiert den Rundungsmodus für die Gleitkommaaddition und kann einen der folgenden Werte annehmen:

  • -1 - unbestimmbar
  • 0 - gegen Null
  • 1 - zum nächsten
  • 2 - in Richtung positive Unendlichkeit
  • 3 - in Richtung negative Unendlichkeit
2

FLT_RADIX 2

Dies definiert die Basisradixdarstellung des Exponenten. Eine Basis-2 ist binär, Basis-10 ist die normale Dezimaldarstellung, Basis-16 ist Hex.

3

FLT_MANT_DIG

DBL_MANT_DIG

LDBL_MANT_DIG

Diese Makros definieren die Anzahl der Stellen in der Nummer (in der FLT_RADIX-Basis).

4

FLT_DIG 6

DBL_DIG 10

LDBL_DIG 10

Diese Makros definieren die maximale Anzahl von Dezimalstellen (Basis-10), die nach dem Runden unverändert dargestellt werden können.

5

FLT_MIN_EXP

DBL_MIN_EXP

LDBL_MIN_EXP

Diese Makros definieren den minimalen negativen Ganzzahlwert für einen Exponenten in der Basis FLT_RADIX.

6

FLT_MIN_10_EXP -37

DBL_MIN_10_EXP -37

LDBL_MIN_10_EXP -37

Diese Makros definieren den minimalen negativen ganzzahligen Wert für einen Exponenten in Basis 10.

7

FLT_MAX_EXP

DBL_MAX_EXP

LDBL_MAX_EXP

Diese Makros definieren den maximalen ganzzahligen Wert für einen Exponenten in der Basis FLT_RADIX.

8

FLT_MAX_10_EXP +37

DBL_MAX_10_EXP +37

LDBL_MAX_10_EXP +37

Diese Makros definieren den maximalen ganzzahligen Wert für einen Exponenten in Basis 10.

9

FLT_MAX 1E+37

DBL_MAX 1E+37

LDBL_MAX 1E+37

Diese Makros definieren den maximalen endlichen Gleitkommawert.

10

FLT_EPSILON 1E-5

DBL_EPSILON 1E-9

LDBL_EPSILON 1E-9

Diese Makros definieren die niedrigstwertige darstellbare Ziffer.

11

FLT_MIN 1E-37

DBL_MIN 1E-37

LDBL_MIN 1E-37

Diese Makros definieren die minimalen Gleitkommawerte.

Beispiel

Das folgende Beispiel zeigt die Verwendung einiger der in der Datei float.h definierten Konstanten.

#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);
}

Lassen Sie uns das obige Programm kompilieren und ausführen, das das folgende Ergebnis liefert:

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