Namespaces
Variants

isnan

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
헤더 파일에 정의됨 <math.h>
#define isnan(arg) /* implementation defined */
(C99부터)

주어진 부동 소수점 숫자 arg 가 NaN(Not-a-Number) 값인지 판단합니다. 이 매크로는 정수 값을 반환합니다.

FLT_EVAL_METHOD 는 무시됩니다: 인수가 해당 타입보다 더 넓은 범위와 정밀도로 평가되더라도, 먼저 해당 의미론적 타입으로 변환된 후 분류가 그 기준에 따라 수행됩니다(이는 평가 타입이 NaN을 지원하지만 의미론적 타입은 지원하지 않는 경우 중요합니다).

목차

매개변수

arg - 부동소수점 값

반환값

arg 가 NaN이면 0이 아닌 정수 값, 0 을 반환합니다.

참고 사항

다양한 부호 비트와 페이로드를 가진 여러 NaN 값이 존재합니다. 자세한 내용은 nan 을 참조하십시오.

NaN 값은 자기 자신이나 다른 NaN 값과 절대 동등하게 비교되지 않습니다. NaN을 복사하면 비트 패턴이 변경될 수 있습니다.

부동 소수점 값이 NaN인지 테스트하는 또 다른 방법은 자기 자신과 비교하는 것입니다: bool is_nan ( double x ) { return x ! = x ; }

예제

#include <float.h>
#include <math.h>
#include <stdio.h>
int main(void)
{
    printf("isnan(NAN)         = %d\n", isnan(NAN));
    printf("isnan(INFINITY)    = %d\n", isnan(INFINITY));
    printf("isnan(0.0)         = %d\n", isnan(0.0));
    printf("isnan(DBL_MIN/2.0) = %d\n", isnan(DBL_MIN / 2.0));
    printf("isnan(0.0 / 0.0)   = %d\n", isnan(0.0 / 0.0));
    printf("isnan(Inf - Inf)   = %d\n", isnan(INFINITY - INFINITY));
}

가능한 출력:

isnan(NAN)         = 1
isnan(INFINITY)    = 0
isnan(0.0)         = 0
isnan(DBL_MIN/2.0) = 0
isnan(0.0 / 0.0)   = 1
isnan(Inf - Inf)   = 1

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.12.3.4 The isnan 매크로 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.12.3.4 isnan 매크로 (p: TBD)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.12.3.4 isnan 매크로 (p: 236-237)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.12.3.4 The isnan 매크로 (p: 217)

참고 항목

(C99) (C99) (C99)
NaN(숫자가 아님)을 반환합니다
(함수)
주어진 부동소수점 값을 분류합니다
(함수 매크로)
주어진 숫자가 유한한 값을 가지는지 확인합니다
(함수 매크로)
(C99)
주어진 숫자가 무한한지 확인합니다
(함수 매크로)
주어진 숫자가 정규(normal)인지 확인합니다
(함수 매크로)
두 부동소수점 값이 정렬되지 않은 상태인지 확인합니다
(함수 매크로)