nan(Not a Nunber) 판별법

In the world/컴퓨터 2009. 8. 31. 10:31
컴퓨터에게 0/0 연산을 수행하게 한 후, 그 결과를 출력하면 "nan" 또는 "NaN" 이 출력된다.

간단한 예제(Fortran)를 만들어보면 다음과 같다.

-----------------------------------------------------------------------
real a, b, c
a = 0.0
b = 0.0
c = a/b
print *, a,b,c
-----------------------------------------------------------------------
실행 결과
    0.000000        0.000000                 NaN

여기에서 c가 0/0 꼴이기 때문에 "NaN"으로 출력된다.

직접 출력해보지 않고 내부적으로 변수가 "NaN"인지 판별하는 방법으로 다음과 같이 쓸 수 있다.

if(c .eq. c + 1.0) print*,'c is NaN'

수가 아닌 것에다가 + 연산을 수행하는 것은 수학적으로는 금지(?) 되어 있지만,
컴퓨터는 그 연산의 결과로 "NaN"을 내어 놓게 된다.

기계의 사고 체계는 흥미롭고 신비로운 세계인 것 같다.
: