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 berechnenpow: Potenz berechnensin、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 <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 <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.