Namespaces
Variants

std::numeric_limits<T>:: quiet_NaN

From cppreference.net
Utilities library
static T quiet_NaN ( ) throw ( ) ;
(C++11 이전)
static constexpr T quiet_NaN ( ) noexcept ;
(C++11 이후)

부동 소수점 타입 T 로 표현되는 특수 값 "quiet not-a-number "를 반환합니다. std:: numeric_limits < T > :: has_quiet_NaN == true 인 경우에만 의미가 있습니다. 부동 소수점 숫자의 가장 일반적인 이진 표현인 IEEE 754에서, 지수부의 모든 비트가 설정되고 가수부의 적어도 하나의 비트가 설정된 모든 값은 NaN을 나타냅니다. 가수부의 어떤 값이 quiet NaN 또는 signaling NaN을 나타내는지, 그리고 부호 비트가 의미 있는지 여부는 구현에 따라 정의됩니다.

목차

반환값

T std:: numeric_limits < T > :: quiet_NaN ( )
/* 비전문화 */ T ( )
bool false
char 0
signed char 0
unsigned char 0
wchar_t 0
char8_t (C++20 이후) 0
char16_t (C++11 이후) 0
char32_t (C++11 이후) 0
short 0
unsigned short 0
int 0
unsigned int 0
long 0
unsigned long 0
long long (C++11 이후) 0
unsigned long long (C++11 이후) 0
float 구현 정의 ( NAN 일 수 있음)
double 구현 정의
long double 구현 정의

참고 사항

NaN은 자기 자신과도 절대 동일하게 비교되지 않습니다. NaN을 복사하면 비트 표현이 보존되지 않을 수 있습니다.

예제

NaN을 생성하는 여러 가지 방법 (출력 문자열은 컴파일러에 따라 다름):

#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';
}

가능한 출력:

nan nan nan nan nan -nan -nan
NaN == NaN? false

참고 항목

부동 소수점 타입이 특수 값 "quiet not-a-number"(NaN)을 표현할 수 있는지 식별합니다
(public static member constant)
주어진 부동 소수점 타입의 signaling NaN 값을 반환합니다
(public static member function)
(C++11) (C++11) (C++11)
not-a-number (NaN)
(function)
(C++11)
주어진 숫자가 NaN인지 확인합니다
(function)