[[분류:프로그래밍]] [목차] == 개요 == NaN(Not a Number)은 잘못된 입력으로 인해 계산을 할 수 없음을 나타내는 기호이다. 이를테면 [[허수|음수의 제곱근]]을 구하려고 한다거나, 일부 언어에서는 [[0으로 나누기|0으로 나눈 몫]]을 구하려고 할 때 ``Division by Zero``대신 NaN을 반환하기도 한다. 이는 실수만을 저장할 수 있는 기본 [[부동소수점]] 저장체계에는 저장할 수 없는 허수나 실존하지 않는 수를 저장할 수 없기 때문에 오류 대신 반환하는 리턴값이다. == 필요성 == 어떤 사람은 NaN 대신 [[예외#s-2]]를 던지는게 더 나을 것이라고 생각할 수도 있다. 하지만 꼭 그런것만은 아닌게 사용자가 입력을 한 값을 프로그램의 알고리즘에 대입을 했을 때 개발자가 예상치 못한 오류는 항상 생길 수 있으며 그럴 때마다 프로그램이 오류를 뿜으려 종료되는 것은 좋지 못하기 때문에 일단 프로그램은 잘 돌아가도록 NaN을 반환하는게 이득일 때도 있다. == 각종 언어에서의 NaN == * [[C\#]][* 다음 두 줄의 코드는 모두 NaN을 출력한다.] {{{#!syntax csharp Console.WriteLine(Math.Sqrt(-3)); Console.WriteLine(double.NaN); }}}