본문 바로가기

프로그래밍/C#

[C#] NaN (Not a Number)


NaN


Not a Number 의 줄임말.


숫자가 아니다.

즉, 잘못된 입력을 받았음을 나타내는 기호이다.




예를 들면, 3 나누기 0의 결과는 NaN으로 표기된다.


아래 예제를 봐보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
public class Example
{
   public static void Main()
   {
      Console.WriteLine("NaN == NaN: {0}", Single.NaN == Single.NaN); 
      Console.WriteLine("NaN != NaN: {0}", Single.NaN != Single.NaN); 
      Console.WriteLine("NaN.Equals(NaN): {0}", Single.NaN.Equals(Single.NaN)); 
      Console.WriteLine("! NaN.Equals(NaN): {0}"! Single.NaN.Equals(Single.NaN)); 
      Console.WriteLine("IsNaN: {0}", Double.IsNaN(Double.NaN));
      Console.WriteLine("\nNaN > NaN: {0}", Single.NaN > Single.NaN); 
      Console.WriteLine("NaN >= NaN: {0}", Single.NaN >= Single.NaN); 
      Console.WriteLine("NaN < NaN: {0}", Single.NaN < Single.NaN);
      Console.WriteLine("NaN < 100.0: {0}", Single.NaN < 100.0f); 
      Console.WriteLine("NaN <= 100.0: {0}", Single.NaN <= 100.0f); 
      Console.WriteLine("NaN >= 100.0: {0}", Single.NaN > 100.0f);
      Console.WriteLine("NaN.CompareTo(NaN): {0}", Single.NaN.CompareTo(Single.NaN)); 
      Console.WriteLine("NaN.CompareTo(100.0): {0}", Single.NaN.CompareTo(100.0f)); 
      Console.WriteLine("(100.0).CompareTo(Single.NaN): {0}", (100.0f).CompareTo(Single.NaN)); 
   }
}
// The example displays the following output:
//       NaN == NaN: False
//       NaN != NaN: True
//       NaN.Equals(NaN): True
//       ! NaN.Equals(NaN): False
//       IsNaN: True
//
//       NaN > NaN: False
//       NaN >= NaN: False
//       NaN < NaN: False
//       NaN < 100.0: False
//       NaN <= 100.0: False
//       NaN >= 100.0: False
//       NaN.CompareTo(NaN): 0
//       NaN.CompareTo(100.0): -1
//       (100.0).CompareTo(Single.NaN): 1

cs


위 예제는

Microsoft Developer Network에서 설명하고 있는 샘플 예제이다.




이중에
'==' 연산자로 비교한 결과를 보면,

Single.NaN == Single.NaN 의 결과는
NaN == NaN: False 이다.


Single.NaN != Single.NaN 의 결과는
NaN != NaN: True 이다.



대표적으로 착각하기 쉬운 결과값이다.

이외에도 >, >=, <, <=, ... , CompareTo() 까지..

위의 다른 결과값을 확인하고

유의하며 사용하자.






참조 사이트

위키피디아(NaN 정의 참조) : https://ko.wikipedia.org/wiki/NaN

Microsoft Developer Network(Single.NaN 설명) : https://msdn.microsoft.com/ko-kr/library/system.single.nan(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1