다음을 통해 공유


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

예제

다음 예제에서는 상수를 보여 줍니다 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.");
}
let zero = 0f

// This condition will return false.
if 0f / zero = Single.NaN then
    printfn "0 / 0 can be tested with Single.NaN."
else
    printfn "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으로 나누면 divisor의 부호에 따라 또는 NegativeInfinity가 반환 PositiveInfinity 됩니다.

float zero = 0.0f;
Console.WriteLine("{0} / {1} = {2}", zero, zero, zero/zero);
// The example displays the following output:
//         0 / 0 = NaN
let zero = 0f
printfn $"{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 메서드 호출은 NaN 다음 예제와 같이 를 반환합니다 NaN.

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
let nan1 = Single.NaN

printfn $"{3} + {nan1} = {3f + nan1}"
printfn $"Abs({nan1}) = {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 값과 비교 Single.NaN 하는 데 사용할 수 없지만 비교 메서드(예: 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
open System

printfn $"NaN == NaN: {Single.NaN = Single.NaN}"
printfn $"NaN != NaN: {Single.NaN <> Single.NaN}"
printfn $"NaN.Equals(NaN): {Single.NaN.Equals Single.NaN}"
printfn $"! NaN.Equals(NaN): {not (Single.NaN.Equals Single.NaN)}"
printfn $"IsNaN: {Double.IsNaN Double.NaN}"

printfn $"\nNaN > NaN: {Single.NaN > Single.NaN}"
printfn $"NaN >= NaN: {Single.NaN >= Single.NaN}"
printfn $"NaN < NaN: {Single.NaN < Single.NaN}"
printfn $"NaN < 100.0: {Single.NaN < 100f}"
printfn $"NaN <= 100.0: {Single.NaN <= 100f}"
printfn $"NaN >= 100.0: {Single.NaN > 100f}"
printfn $"NaN.CompareTo(NaN): {Single.NaN.CompareTo Single.NaN}"
printfn $"NaN.CompareTo(100.0): {Single.NaN.CompareTo 100f}"
printfn $"(100.0).CompareTo(Single.NaN): {100f.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

적용 대상

추가 정보