Single.NaN 필드

정의

Not-a-Number(NaN)를 나타냅니다. 이 필드는 상수입니다.

public: float NaN = NaN;
public const float NaN = NaN;
val mutable NaN : single
Public Const NaN As Single  = NaN

필드 값

Value = NaN
Single

예제

다음 예제에서는 상수를 보여 NaN 니다.

Single zero = 0;

// This condition will return false.
if ( (0 / zero) == Single::NaN )
{
   Console::WriteLine( "0 / 0 can be tested with Single::NaN." );
}
else
{
   Console::WriteLine( "0 / 0 cannot be tested with Single::NaN; use Single::IsNan() instead." );
}
Single zero = 0;

// This condition will return false.
if ((0 / zero) == Single.NaN)
{
    Console.WriteLine("0 / 0 can be tested with Single.NaN.");
}
else
{
    Console.WriteLine("0 / 0 cannot be tested with Single.NaN; use Single.IsNan() instead.");
}
Dim zero As Single = 0

' This condition will return false.
If (0 / zero) = Single.NaN Then
    Console.WriteLine("0 / 0 can be tested with Single.NaN.")
Else
    Console.WriteLine("0 / 0 cannot be tested with Single.NaN; use Single.IsNan() instead.")
End If

설명

연산 결과가 정의되지 않은 경우 메서드 또는 NaN 연산자는 를 반환합니다. 예를 들어 다음 예제와 같이 0을 0으로 나눈 결과는 NaN 입니다. 그러나 0이 아닌 숫자를 0으로 나누면 PositiveInfinity NegativeInfinity 0의 부호에 따라 또는 가 반환됩니다.

float zero = 0.0f;
Console.WriteLine("{0} / {1} = {2}", zero, zero, zero/zero);
// The example displays the following output:
//         0 / 0 = NaN
Dim zero As Single = 0
Console.WriteLine("{0} / {1} = {2}", zero, zero, zero/zero)
' The example displays the following output:
'         0 / 0 = NaN

또한 NaN 다음 예제와 같이 값 또는 값에 대한 연산이 있는 메서드 호출은 NaNNaN 반환합니다.

float nan1 = Single.NaN;

Console.WriteLine("{0} + {1} = {2}", 3, nan1, 3 + nan1);
Console.WriteLine("Abs({0}) = {1}", nan1, Math.Abs(nan1));
// The example displays the following output:
//       3 + NaN = NaN
//       Abs(NaN) = NaN
Dim nan1 As Single = Single.NaN

Console.WriteLine("{0} + {1} = {2}", 3, nan1, 3 + nan1)
Console.WriteLine("Abs({0}) = {1}", nan1, Math.Abs(nan1))
' The example displays the following output:
'       3 + NaN = NaN
'       Abs(NaN) = NaN

메서드를 사용하여 IsNaN 값이 숫자가 아닌지 여부를 확인합니다. 일반적으로 Single 연산자는 다른 값과 비교하는 데 사용할 수 없지만 Single.NaN Single 비교 메서드(예: EqualsCompareTo )는 사용할 수 있습니다. 다음 예제에서는 비교 연산자와 메서드 간의 동작 차이를 보여 Single 줍니다.

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
Module Example
   Public Sub 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("Not NaN.Equals(NaN): {0}", Not Single.NaN.Equals(Single.NaN)) 
      Console.WriteLine("IsNaN: {0}", Double.IsNaN(Double.NaN))
      Console.WriteLine()
      Console.WriteLine("NaN > NaN: {0}", Single.NaN > 100.0f) 
      Console.WriteLine("NaN >= NaN: {0}", Single.NaN >= 100.0f) 
      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)) 
   End Sub
End Module
' 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

적용 대상

추가 정보