Das <cfloat>-Modul in der C++-Standardbibliothek.

<cfloat>ist eine Header-Datei in der C++-Standardbibliothek, die verwendet wird, um Makros und Konstanten im Zusammenhang mit Gleitkommazahlen zu definieren. Diese Makros und Konstanten liefern Informationen wie Genauigkeit und Bereich der Gleitkommadarstellung, hauptsächlich aus der C-Standardbibliothek.<float.h>Header-Datei.

Grundlagen der Gleitkommazahlen

In C++ ist eine Gleitkommazahl ein Datentyp, der zur Darstellung von Dezimalzahlen verwendet wird. C++ bietet zwei grundlegende Gleitkommatypen:

  • float: Gleitkommazahl mit einfacher Genauigkeit, belegt normalerweise 4 Bytes.
  • double: Gleitkommazahl mit doppelter Genauigkeit, belegt normalerweise 8 Bytes.

Definition und Syntax

In C++ können Siefloatoderdoubleverwenden, um Gleitkommavariablen zu definieren. Zum Beispiel:

float f = 3.14f; // 使用 f 后缀表示浮点数字面量
double d = 2.718;

Gleitkommaoperationen in der Standardbibliothek

Obwohl die C++-Standardbibliothek über kein dediziertes "cfloat"-Modul verfügt,<cmath>bietet die Header-Datei viele Funktionen für Gleitkommaoperationen, wie z. B.:

  • sqrtQuadratwurzel berechnen
  • pow: Potenz berechnen
  • sin、cos、tanTrigonometrische Funktionen berechnen

<cfloat>Bereitgestellte Konstanten

1. Gleitkommabereich

  • FLT_MIN:floatDie kleinste positive Zahl des Typs.
  • FLT_MAX:floatDie größte positive Zahl des Typs.
  • DBL_MIN:doubleDie kleinste positive Zahl des Typs.
  • DBL_MAX:doubleDie größte positive Zahl des Typs.
  • LDBL_MIN:long doubleDie kleinste positive Zahl des Typs.
  • LDBL_MAX:long doubleDie größte positive Zahl des Typs.

2. Gleitkommapräzision

  • FLT_DIG:floatDie Anzahl der signifikanten Stellen des Typs.
  • DBL_DIG:doubleDie Anzahl der signifikanten Stellen des Typs.
  • LDBL_DIG:long doubleDie Anzahl der signifikanten Stellen des Typs.

3. Minimaler negativer Exponent

  • FLT_MIN_EXP:floatDer kleinste negative Exponent des Typs.
  • DBL_MIN_EXP:doubleDer kleinste negative Exponent des Typs.
  • LDBL_MIN_EXP:long doubleDer kleinste negative Exponent des Typs.

4. Maximaler positiver Exponent

  • FLT_MAX_EXP:floatDer größte positive Exponent des Typs.
  • DBL_MAX_EXP:doubleDer größte positive Exponent des Typs.
  • LDBL_MAX_EXP:long doubleDer größte positive Exponent des Typs.

5. Maschinenepsilon

  • FLT_EPSILON:floatdas Maschinenepsilon eines Typs, das die kleinste Gleitkommazahl darstellt, die von 1.0 unterschieden werden kann und größer als 1.0 ist.
  • DBL_EPSILON:doubleDas Maschinenepsilon des Typs.
  • LDBL_EPSILON:long doubleDas Maschinenepsilon des Typs.

Beispiel

Das folgende Beispiel zeigt die Verwendung<cfloat>Bereitgestellte Konstanten:

Beispiel

#include <iostream>
#include <cfloat>

int main() {
    // den Bereich und die Präzision des Typs float ausgeben
    std::cout << "float:\n";
    std::cout << "Min: " << FLT_MIN << '\n';
    std::cout << "Max: " << FLT_MAX << '\n';
    std::cout << "Epsilon: " << FLT_EPSILON << '\n';
    std::cout << "Ziffern: " << FLT_DIG << '\n';

    // Wertebereich und Genauigkeit des Typs double ausgeben
    std::cout << "\ndouble:\n";
    std::cout << "Min: " << DBL_MIN << '\n';
    std::cout << "Max: " << DBL_MAX << '\n';
    std::cout << "Epsilon: " << DBL_EPSILON << '\n';
    std::cout << "Ziffern: " << DBL_DIG << '\n';

    // Wertebereich und Genauigkeit des Typs long double ausgeben
    std::cout << "\nlong double:\n";
    std::cout << "Min: " << LDBL_MIN << '\n';
    std::cout << "Max: " << LDBL_MAX << '\n';
    std::cout << "Epsilon: " << LDBL_EPSILON << '\n';
    std::cout << "Ziffern: " << LDBL_DIG << '\n';

    return 0;
}

Ausgabe:

float:
Min: 1.17549e-38
Max: 3.40282e+38
Epsilon: 1.19209e-07
Digits: 6

double:
Min: 2.22507e-308
Max: 1.79769e+308
Epsilon: 2.22045e-16
Digits: 15

long double:
Min: 2.22507e-308
Max: 1.79769e+308
Epsilon: 2.22045e-16
Digits: 15

Nachfolgend ein Beispiel unter Verwendung von<cmath>Funktionen in der Header-Datei für Operationen mit Gleitkommazahlen in einem C++-Programm:

Beispiel

#include <iostream>
#include <cmath> // enthält mathematische Funktionen

int main() {
    double num = 9.0;
    double root = sqrt(num); // Quadratwurzel berechnen
    double power = pow(2.0, 3.0); // 2 hoch 3 berechnen

    std::cout << "Die Quadratwurzel von " << num << " ist " << root << std::endl;
    std::cout << "Die Potenz von 2 hoch 3 ist " << power << std::endl;

    return 0;
}

Ausgabe:

The square root of 9 is 3
The power of 2 to the 3 is 8

Hinweise

  • Die Genauigkeit von Gleitkommazahlen ist begrenzt, daher können bei Gleitkomma-Arithmetik Genauigkeitsprobleme auftreten.
  • Beim Vergleich, ob zwei Gleitkommazahlen gleich sind, sollte eine kleine Fehlertoleranz zur Beurteilung verwendet werden, anstatt direkt==Operator.

Obwohl "cfloat" nicht Teil der C++-Standardbibliothek ist, bietet C++ leistungsstarke Gleitkommaunterstützung und zugehörige mathematische Funktionsbibliotheken. Durch die Verwendung von<cmath>Header-Datei können Sie bequem verschiedene Gleitkommaoperationen durchführen. Ich hoffe, dieser Artikel kann Anfängern helfen, Gleitkommaoperationen in C++ besser zu verstehen.

Weitere Erweiterungen