Namespaces
Variants

std:: fpclassify

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
fpclassify
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Definiert im Header <cmath>
(1)
int fpclassify ( float num ) ;

int fpclassify ( double num ) ;

int fpclassify ( long double num ) ;
(seit C++11)
(bis C++23)
constexpr int fpclassify ( /* floating-point-type */ num ) ;
(seit C++23)
Definiert im Header <cmath>
template < class Integer >
int fpclassify ( Integer num ) ;
(A) (seit C++11)
(constexpr seit C++23)
1) Kategorisiert den Gleitkommawert num in folgende Kategorien: Null, subnormal, normal, unendlich, NAN oder implementierungsdefinierte Kategorie. Die Bibliothek bietet Überladungen von std::fpclassify für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters num an. (seit C++23)
A) Zusätzliche Überladungen werden für alle Ganzzahltypen bereitgestellt, die als double behandelt werden.

Inhaltsverzeichnis

Parameter

num - Gleitkomma- oder Ganzzahlwert

Rückgabewert

einer von FP_INFINITE , FP_NAN , FP_NORMAL , FP_SUBNORMAL , FP_ZERO oder ein implementierungsdefinierter Typ, der die Kategorie von num spezifiziert.

Hinweise

Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen lediglich sicherstellen, dass für ihr Argument num vom Ganzzahltyp std :: fpclassify ( num ) dieselbe Wirkung hat wie std :: fpclassify ( static_cast < double > ( num ) ) .

Beispiel

#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

Siehe auch

(C++11)
prüft, ob die gegebene Zahl einen endlichen Wert hat
(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 grundlegenden numerischen Typen
(Klassentemplate)
C-Dokumentation für fpclassify