Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ isinf() 함수 완벽 정리: 무한대 여부 확인하기


이 글에서는 C++의 isinf() 함수가 무엇인지, 어떤 문법으로 사용되는지, 내부적으로 어떻게 동작하며 어떤 값을 반환하는지 자세히 알아보겠습니다.

isinf()는 C++ 표준 라이브러리의 <cmath> 헤더 파일에 포함된 내장 함수로, 인자로 전달된 변수가 무한대(infinity)인지 여부를 검사합니다. 음의 무한대와 양의 무한대 모두 무한대로 판별합니다. 값이 무한대이면 함수는 0이 아닌 값(true)을 반환하고, 그렇지 않으면 0(false)을 반환합니다. 또한 값이 NaN(Not a Number)인 경우에도 0을 반환합니다.

문법

bool isinf(float n);

또는

bool isinf(double n);

또는

bool isinf(long double n);

이 함수는 부동 소수점 숫자 하나만 매개변수로 받습니다.

반환값

함수는 불리언(boolean) 값을 반환합니다. 무한대가 아니면 0(false), 무한대이면 1(true)입니다.

예제 1

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    float a = 0.0, b = 10.0;
    isinf(a/b) ? cout<<"\nInfinite" : cout<<"\nFinite"; // 숫자가 무한대인지 유한한지 검사
    isinf(b/a) ? cout<<"\nInfinite" : cout<<"\nFinite";
}

출력 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Finite
Infinite

a/b는 0.0 ÷ 10.0 = 0으로 유한한 수이므로 "Finite"가 출력되고, b/a는 10.0 ÷ 0.0으로 양의 무한대가 되어 "Infinite"가 출력됩니다.

예제 2

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    float a = 0.0;
    cout<<isinf(a);
    cout<<isinf(sqrt(-1.0));
}

출력 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

0 0

isinf(a)는 a가 0.0으로 유한한 수이기 때문에 0을 반환하고, sqrt(-1.0)은 음수의 제곱근을 구할 수 없어 NaN을 반환하므로 역시 0이 출력됩니다. 즉, isinf() 함수는 NaN 값에 대해서도 false를 반환한다는 점을 기억해 두세요.

참고: 함께 알아두면 좋은 함수들

<cmath> 헤더에는 isinf() 외에도 비슷한 목적의 함수들이 있습니다. isfinite()는 값이 유한한 수인지 검사하고, isnan()은 값이 NaN인지 검사합니다. 이들을 적절히 조합하면 부동 소수점 연산 결과를 더욱 안전하고 견고하게 처리할 수 있습니다.