78. 무한대와 NaN
1. 키워드
- 무한대(Infinity)
- NaN(Not a Number)
2. 실수의 무한대와 숫자가 아닌 값 검사
- C에서 무한대를 검사하는 방법은 다음과 같다.
#include <stdio.h>
#include <float.h> // 실수 자료형의 양수 최솟값, 최댓값이 정의된 헤더 파일
#include <math.h> // 무한대 INFINITY가 정의된 헤더 파일
int main()
{
float num1 = FLT_MAX;
float num2;
num1 = num1 * 1000.0f; // float 타입의 양수 최댓값에 1000을 곱하여 무한대가 됨
if (num1 == INFINITY) // INFINITY와 비교하여 값이 무한대인지 검사
printf("infinity\n");
if (isinf(num1)) // isinf를 사용하여 값이 무한대인지 검사
printf("infinity\n");
num2 = 0.0f;
num1 = 1.0f / num2; // 실수를 0으로 나누면 무한대
if (isinf(num1)) // isinf를 사용하여 값이 무한대인지 검사
printf("infinity\n");
return 0;
}
// infinity
// infinity
// infinity
- 변수를
INFINITY
와 비교하거나 isinf
함수를 사용하여 값이 무한대인지 검사할 수 있다.
INFINITY
값과 isinf
함수는 math.h
헤더 파일에 정의 및 선언되어 있다.
#include <stdio.h>
#include <math.h> // sqrt와 isnan이 정의 및 선언된 헤더 파일
int main()
{
float num1;
num1 = sqrt(-1.0f); // -1의 제곱근은 실수로 표현할 수 없음
if (isnan(num1)) // 숫자가 아닌 값인지 검사
printf("nan\n");
return 0;
}
// nan
sqrt
로 -1
의 제곱근을 구하면 허수 i
이다.
- 따라서 실수로는 표현할 수 없는 수가 된다.
- 이렇게 숫자가 아닌 값을 표현할 때는 NaN이라고 하며
isnan
함수로 검사할 수 있다.
sqrt
함수와 isnan
은 math.h
헤더 파일에 정의 및 선언되어 있다.
References