std::numeric_limits<T>:: quiet_NaN
|
static
T quiet_NaN
(
)
throw
(
)
;
|
(jusqu'à C++11) | |
|
static
constexpr
T quiet_NaN
(
)
noexcept
;
|
(depuis C++11) | |
Retourne la valeur spéciale «
not-a-number
silencieux », telle que représentée par le type à virgule flottante
T
. N'a de sens que si
std::
numeric_limits
<
T
>
::
has_quiet_NaN
==
true
. Dans la norme IEEE 754, la représentation binaire la plus courante des nombres à virgule flottante, toute valeur dont tous les bits de l'exposant sont définis et au moins un bit de la fraction est défini représente un NaN. Il est défini par l'implémentation quelles valeurs de la fraction représentent des NaNs silencieux ou signalés, et si le bit de signe est significatif.
Table des matières |
Valeur de retour
T
|
std:: numeric_limits < T > :: quiet_NaN ( ) |
| /* non-spécialisé */ | T ( ) |
| bool | false |
| char | 0 |
| signed char | 0 |
| unsigned char | 0 |
| wchar_t | 0 |
| char8_t (depuis C++20) | 0 |
| char16_t (depuis C++11) | 0 |
| char32_t (depuis C++11) | 0 |
| short | 0 |
| unsigned short | 0 |
| int | 0 |
| unsigned int | 0 |
| long | 0 |
| unsigned long | 0 |
| long long (depuis C++11) | 0 |
| unsigned long long (depuis C++11) | 0 |
| float | défini par l'implémentation (peut être NAN ) |
| double | défini par l'implémentation |
| long double | défini par l'implémentation |
Notes
Un NaN ne se compare jamais égal à lui-même. La copie d'un NaN peut ne pas préserver sa représentation binaire.
Exemple
Plusieurs façons de générer un NaN (la chaîne de sortie est spécifique au compilateur) :
#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'; }
Sortie possible :
nan nan nan nan nan -nan -nan NaN == NaN? false
Voir aussi
|
[static]
|
identifie les types à virgule flottante qui peuvent représenter la valeur spéciale « not-a-number silencieux » (NaN)
(constante de membre statique publique) |
|
[static]
|
renvoie une valeur NaN signalée du type à virgule flottante donné
(fonction de membre statique publique) |
|
(C++11)
(C++11)
(C++11)
|
not-a-number (NaN)
(fonction) |
|
(C++11)
|
vérifie si le nombre donné est NaN
(fonction) |