std::fpclassify
Von cppreference.com
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
int fpclassify( float num ); int fpclassify( double num ); |
(seit C++11) (bis C++23) |
|
| constexpr int fpclassify( /* floating-point-type */ num ); |
(seit C++23) | |
| Definiert in der Header-Datei <cmath> |
||
| template< class Integer > int fpclassify( Integer num ); |
(A) | (seit C++11) (constexpr seit C++23) |
1) Klassifiziert den Gleitkommawert num in die folgenden Kategorien: Null, Subnormal, Normal, Unendlich, NAN oder eine implementierungsabhängige Kategorie. Die Bibliothek stellt Überladungen von
std::fpclassify für alle cv-unqualified Gleitkommatypen als Parametertyp von num bereit.(seit C++23)A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
Inhalt |
[edit] Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
[edit] Rückgabewert
einer der Werte FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, FP_ZERO oder ein implementierungsabhängiger Typ, der die Kategorie von num angibt.
[edit] Hinweise
Die zusätzlichen Überladungen müssen nicht exakt als (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihren Argument num vom Integer-Typ, std::fpclassify(num) denselben Effekt hat wie std::fpclassify(static_cast<double>(num)).
[edit] Beispiel
Führen Sie diesen Code aus
#include <cfloat> #include <cmath> #include <iostream> auto show_classification(double x) { switch (std::fpclassify(x)) { case FP_INFINITE: return "Inf"; case FP_NAN: return "NaN"; case FP_NORMAL: return "normal"; case FP_SUBNORMAL: return "subnormal"; case FP_ZERO: return "zero"; default: return "unknown"; } } int main() { std::cout << "1.0/0.0 is " << show_classification(1 / 0.0) << '\n' << "0.0/0.0 is " << show_classification(0.0 / 0.0) << '\n' << "DBL_MIN/2 is " << show_classification(DBL_MIN / 2) << '\n' << "-0.0 is " << show_classification(-0.0) << '\n' << "1.0 is " << show_classification(1.0) << '\n'; }
Ausgabe
1.0/0.0 is Inf 0.0/0.0 is NaN DBL_MIN/2 is subnormal -0.0 is zero 1.0 is normal
[edit] Siehe auch
| (C++11) |
prüft, ob die gegebene Zahl endlich ist (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl unendlich ist (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl NaN ist (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl normal ist (Funktion) |
| bietet eine Schnittstelle zur Abfrage von Eigenschaften aller fundamentalen numerischen Typen (Klassenschablone) | |
| C-Dokumentation für fpclassify
| |