Namespaces
Variants

std::numeric_limits<T>:: quiet_NaN

From cppreference.net
Utilities library
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

identifie les types à virgule flottante qui peuvent représenter la valeur spéciale « not-a-number silencieux » (NaN)
(constante de membre statique publique)
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)