C-Programmierung: float.h

Aus Wikibooks

Der Standard definiert eine Gleitkommazahl nach dem folgenden Modell (in Klammern die symbolischen Konstanten für den Typ float):

  • s = Vorzeichen
  • b = Basis ( FLT_RADIX )
  • e = Exponent (Wert zwischen FLT_MIN und FLT_MAX )
  • p = Genauigkeit ( FLT_MANT_DIG )
  • fk = nichtnegative Ganzzahl kleiner b

Der Standard weist darauf hin, dass hierbei nur um ein Beschreibung der Implementierung von Fließkommazahlen handelt und sich von der tatsächlichen Implementierung unterscheidet.

Mit float.h stehen folgende Gleitkommatypen zur Verfügung:

  • float
  • double
  • long double

Für alle Gleitkommatypen definierte symbolische Konstanten:

  • FLT_RADIX (2) Basis
  • FLT_ROUND Erhält die Art der Rundung einer Implementierung:
    • -1 unbestimmt
    • 0 in Richtung 0
    • 1 zum nächsten Wert
    • 2 in Richtung plus unendlich
    • 3 in Richtung minus unendlich

Die symbolische Konstante FLT_ROUND kann auch andere Werte annehmen, wenn die Implementierung ein anderes Rundungsverfahren benutzt.

Für den Typ Float sind definiert:

  • FLT_MANT_DIG Anzahl der Ziffern in der Mantisse
  • FLT_DIG (6) Genauigkeit in Dezimalziffern
  • FLT_EPSILON (1E-5) kleinste Zahl x für die gilt 1.0 + x ≠ 1.0
  • FLT_MAX (1E+37) größte Zahl, die der Typ float darstellen kann
  • FLT_MIN (1E-37) kleinste Zahl größer als 0, die der Typ float noch darstellen kann
  • FLT_MAX_EXP Minimale Größe des Exponent
  • FLT_MIN_EXP Maximale Größe des Exponent

Für den Typ Double sind definiert:

  • DBL_MANT_DIG Anzahl der Ziffern in der Matisse
  • DBL_DIG (10) Genauigkeit in Dezimalziffern
  • DBL_EPSILON (1E-9) kleinste Zahl x für die gilt 1.0 + x ≠ 1.0
  • DBL_MAX (1E+37) größte Zahl, die der Typ double darstellen kann
  • DBL_MIN (1E-37) kleinste Zahl größer als 0, die der Typ double noch darstellen kann
  • DBL_MAX_EXP Minimale Größe des Exponent
  • DBL_MIN_EXP Maximale Größe des Exponent

Für den Typ Long Double sind definiert:

  • LDBL_MANT_DIG Anzahl der Ziffern in der Matisse
  • LDBL_DIG (10) Genauigkeit in Dezimalziffern
  • LDBL_EPSILON (1E-9) kleinste Zahl x für die gilt 1.0 + x ≠ 1.0
  • LDBL_MAX (1E+37) größte Zahl, die der Typ long double darstellen kann
  • LDBL_MIN (1E-37) kleinste Zahl größer als 0, die der Typ long double noch darstellen kann
  • LDBL_MAX_EXP Minimale Größe des Exponent
  • LDBL_MIN_EXP Maximale Größe des Exponent