Single.NaN Campo

Definición

Representa un valor no numérico (NaN). Este campo es constante.

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

Valor de campo

Value = NaN

Ejemplos

En el ejemplo siguiente se muestra la NaN constante .

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

Comentarios

Un método o operador devuelve NaN cuando el resultado de una operación no está definido. Por ejemplo, el resultado de dividir cero por cero es NaN, como se muestra en el ejemplo siguiente. (Pero tenga en cuenta que dividir un número distinto de cero por cero devuelve o PositiveInfinityNegativeInfinity, dependiendo del signo del divisor).

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

Además, una llamada de método con un NaN valor o una operación en un NaN valor devuelve NaN, como se muestra en el ejemplo siguiente.

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

Use el IsNaN método para determinar si un valor no es un número. En general, Single los operadores no se pueden usar para comparar Single.NaN con otros Single valores, aunque los métodos de comparación (como Equals y CompareTo) pueden. En el ejemplo siguiente se muestra la diferencia de comportamiento entre Single los operadores de comparación y los métodos.

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

Se aplica a

Consulte también