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» silencieuse, telle que représentée par le type à virgule flottante T. Significatif uniquement si std::numeric_limits<T>::has_quiet_NaN == true. En IEEE 754, la représentation binaire la plus courante des nombres à virgule flottante, toute valeur dont tous les bits de l'exposant sont mis à 1 et au moins un bit de la fraction est mis à 1 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.
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) |