std::numeric_limits<T>::quiet_NaN
Von cppreference.com
< cpp | types | numeric limits
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 vom Fließkommatyp T dargestellt wird. Nur sinnvoll, wenn std::numeric_limits<T>::has_quiet_NaN == true. In IEEE 754, der gebräuchlichsten Binärdarstellung von Fließkommazahlen, repräsentiert jeder Wert, bei dem alle Bits des Exponenten gesetzt sind und mindestens ein Bit des Bruchteils gesetzt ist, eine NaN. Es ist implementierungsabhängig, welche Werte des Bruchteils quiet oder signaling NaNs darstellen und ob das Vorzeichenbit aussagekräftig ist.
Inhalt |
[bearbeiten] 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 | implementierungsabhängig (kann NAN sein) |
| double | implementierungsdefiniert |
| long double | implementierungsdefiniert |
[bearbeiten] Hinweise
Eine NaN ist niemals gleich sich selbst. Das Kopieren einer NaN erhält möglicherweise nicht deren Bitdarstellung.
[bearbeiten] Beispiel
Mehrere Möglichkeiten, eine NaN zu erzeugen (die Ausgabe ist compilerspezifisch)
Führen Sie diesen Code aus
#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
[bearbeiten] Siehe auch
| [static] |
identifiziert Gleitkommatypen, die den speziellen Wert "quiet not-a-number" (NaN) darstellen können (öffentliche statische Member-Konstante) |
| [static] |
gibt einen Signal-NaN-Wert des gegebenen Gleitkommatyps zurück (öffentliche statische Memberfunktion) |
| (C++11)(C++11)(C++11) |
Not-a-Number (NaN) (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl NaN ist (Funktion) |