이 글에서는 C++의 isfinite() 함수가 어떻게 동작하는지, 그리고 그 문법과 다양한 예제를 자세히 살펴보겠습니다.
isfinite()는 C++ 표준 라이브러리의 <cmath> 헤더 파일에 포함된 내장 함수입니다. 이 함수는 주어진 숫자가 유한수(finite number)인지 검사하여 그 결과를 반환합니다. 여기서 유한수란 무한대(infinity)도 아니고 NaN(Not a Number)도 아닌 모든 부동소수점 수를 의미합니다.
문법
bool isfinite(float n);
또는
bool isfinite(double n);
또는
bool isfinite(long double n);
이 함수는 단 하나의 매개변수 n만을 받으며, n은 유한 여부를 검사할 대상 값입니다.
반환값
이 함수는 불리언(Boolean) 값을 반환합니다.
- 숫자가 유한수인 경우: 1(true)
- 숫자가 유한수가 아닌 경우(무한대 또는 NaN): 0(false)
예제 1
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float a = 10.0, b = 0.1, c = 0.0;
isfinite(a/b)?cout<<"\nThe result of a/b is finite":cout<<"\nThe result of a/b is not finite";
isfinite(a/c)?cout<<"\nThe result of a/c is finite":cout<<"\nThe result of a/c is not finite";
}출력 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
The result of a/b is finite The result of a/c is not finite
a/b는 정상적인 유한수이므로 true를 반환하지만, a/c는 0으로 나누어 무한대(inf)가 되기 때문에 false를 반환합니다.
예제 2
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float c = 0.0, d = -1.0;
// 숫자가 무한대인지 유한수인지 검사
isfinite(c)?cout<<"\nFinite number":cout<<"\nNot a finite number";
cout<<isfinite(sqrt(d)); // 결과는 -NAN
}출력 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Finite number 0
참고: 음수인 -1.0의 제곱근은 실수 범위에서 정의되지 않으므로 NaN을 반환합니다. 따라서 isfinite()는 0(false)을 반환하게 됩니다.