std::numeric_limits<T>::quiet_NaN
static T quiet_NaN() throw();
|
(bis C++11) | |
static constexpr T quiet_NaN() noexcept;
|
(seit C++11) | |
Gibt den speziellen Wert "Quiet Not-a-Number" zurück, wie er durch den Gleitkommatyp T dargestellt wird. Nur sinnvoll, wenn std::numeric_limits<T>::has_quiet_NaN == true. In IEEE 754, der verbreitetsten binären Darstellung von Gleitkommazahlen, stellt jeder Wert, bei dem alle Bits des Exponenten gesetzt sind und mindestens ein Bit der Mantisse gesetzt ist, ein NaN dar. Es ist implementierungsdefiniert, welche Werte der Mantisse ein Quiet- oder Signaling-NaN darstellen und ob das Vorzeichenbit bedeutsam ist.
Rückgabewert
T
|
std:: numeric_limits < T > :: quiet_NaN ( ) |
| /* nicht spezialisiert */ | T ( ) |
| bool | false |
| char | 0 |
| signed char | 0 |
| unsigned char | 0 |
| wchar_t | 0 |
| char8_t (seit C++20) | 0 |
| char16_t (seit C++11) | 0 |
| char32_t (seit C++11) | 0 |
| short | 0 |
| unsigned short | 0 |
| int | 0 |
| unsigned int | 0 |
| long | 0 |
| unsigned long | 0 |
| long long (seit C++11) | 0 |
| unsigned long long (seit C++11) | 0 |
| float | implementierungsdefiniert (kann NAN sein) |
| double | implementierungsdefiniert |
| long double | implementierungsdefiniert |
Hinweise
Ein NaN (Not a Number) vergleicht sich niemals als gleich mit sich selbst. Das Kopieren eines NaN kann seine Bitdarstellung nicht bewahren.
Beispiel
Mehrere Möglichkeiten, eine NaN zu erzeugen (die Ausgabezeichenkette ist compilerspezifisch):
#include <iostream> #include <limits> #include <cmath> int main() { std::cout << std::numeric_limits<double>::quiet_NaN() << ' ' // nan << std::numeric_limits<double>::signaling_NaN() << ' ' // nan << std::acos(2) << ' ' // nan << std::tgamma(-1) << ' ' // nan << std::log(-1) << ' ' // nan << std::sqrt(-1) << ' ' // -nan << 0 / 0.0 << '\n'; // -nan std::cout << "NaN == NaN? " << std::boolalpha << ( std::numeric_limits<double>::quiet_NaN() == std::numeric_limits<double>::quiet_NaN() ) << '\n'; }
Mögliche Ausgabe:
nan nan nan nan nan -nan -nan NaN == NaN? false
Siehe auch
|
[static]
|
identifiziert Gleitkommatypen, die den speziellen Wert "ruhendes Not-a-Number" (NaN) darstellen können
(öffentliche statische Member-Konstante) |
|
[static]
|
gibt einen signalisierenden NaN-Wert des gegebenen Gleitkommatyps zurück
(öffentliche statische Member-Funktion) |
|
(C++11)
(C++11)
(C++11)
|
Not-a-Number (NaN)
(Funktion) |
|
(C++11)
|
prüft, ob die gegebene Zahl NaN ist
(Funktion) |