Namespaces
Variants

std::numeric_limits<T>::quiet_NaN

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
 
 
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

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)