본문 바로가기

C++

[C++] 숫자 판별: std::isnan()

반응형

std::isnan() 함수는 <cmath> 헤더 파일에 포함되어 있으며,

숫자인지 아닌지 확인해 주는 함수이다.

무한대 또는 숫자가 아닌 것을 출력하게 되면 inf(양의 무한대), -inf(음의 무한대), -nan(ind)(숫자가 아님)으로 출력이 된다.

 

#include <iostream>

int main() {

	using namespace std;
	
	double zero = 0.0;
	double posinf = 5.0 / zero;
	double neginf = -5.0 / zero;
	double nan = zero / zero;

	cout << posinf << '\n';		// inf: 양의 무한대
	cout << neginf << '\n';		// -inf: 음의 무한대
	cout << nan << '\n';		// -nan(ind): 결정할 수 없다. ind; indeterminate

	return 0;
}

 

isnan() 함수를 이용하여 변수(값)이 숫자인지 아닌지 판별할 수 있다.

bool 타입의 리턴 값을 갖는 isnan() 함수는 0(숫자이다), 1(숫자가 아니다)로 출력된다.

#include <iostream>
#include <cmath>   // std::isnan()

int main() {

	using namespace std;
	
	double zero = 0.0;
	double posinf = 5.0 / zero;
	double neginf = -5.0 / zero;
	double nan = zero / zero;

	cout << isnan(posinf) << '\n';   // 0: 숫자 이다
	cout << isnan(neginf) << '\n';   // 0: 숫자 이다
	cout << isnan(nan) << '\n';      // 1: 숫자가 아니다

	return 0;
}

 

 

 

 

참고: Inflearn, 홍정모의 따라하며 배우는 C++, '2.5 부동소수점수 floating point numbers'

반응형