-
에러값 체크함수 - isnan프로그래밍/C++ 2014. 9. 22. 23:25
프로그래밍을 하다보면 나눗셈을 잘못하여 에러값이 나오게 된다.
주로 많이 보는 에러값은 'NaN'
'NaN'은 Not a Number라는 뜻으로 수가 아님을 뜻 한다.
제곱근을 할 때 -값을 넣을 때나, 분모를 0으로 나누었을 때 'NaN'이 자주 발생한다.
그런데 이를 체크 하려고 하니 뭘로 체크를 해야 할까? 잠시 고민이 된다.
그럴 땐 매크로로 지원하는 isnan 함수를 사용하면 되겠다.
int isnan(x);
math.h에 속한 함수로써
파라메터는 floating-point value를 넣어주면 되고 (float, double)
리턴값으로는 0 (nan이 아니다)과 1 (nan이다)로 나오니 0이 아닌 값으로 비교하면 된다.
예제)
/* isnan example */ #include
/* printf */ #include /* isnan, sqrt */ int main() { printf ("isnan(0.0) : %d\n",isnan(0.0)); printf ("isnan(1.0/0.0) : %d\n",isnan(1.0/0.0)); printf ("isnan(-1.0/0.0) : %d\n",isnan(-1.0/0.0)); printf ("isnan(sqrt(-1.0)): %d\n",isnan(sqrt(-1.0))); return 0; } 팁)
nan값은 서로 비교하면 같은 값이 아님을 활용하여 아래와 같이 자신만의 함수를 만들 수 있다.
int isnan_float (float f) { return (f != f); }
'프로그래밍 > C++' 카테고리의 다른 글
폴더 내 파일 찾아 읽기 (0) 2015.01.23 getline 함수 (0) 2015.01.07 SQLite3 라이브러리 생성하기 (0) 2014.11.13 문자열에서 문자를 추출(strtok, strtok_r) (0) 2014.09.12 unsigned short만 사용하면 warning이 뜬다. (0) 2014.08.29