Double.NaN Campo

Definición

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

public: double NaN = NaN;
public const double NaN = NaN;
val mutable NaN : double
Public Const NaN As Double  = NaN

Valor de campo

Value = NaN

Ejemplos

En el siguiente ejemplo se muestra el uso de NaN.

Double zero = 0;

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

// This condition will return false.
if 0. / zero = Double.NaN then
    printfn "0 / 0 can be tested with Double.NaN."
else
    printfn "0 / 0 cannot be tested with Double.NaN use Double.IsNan() instead."
Dim zero As Double = 0

' This condition will return false.
If (0 / zero) = Double.NaN Then
    Console.WriteLine("0 / 0 can be tested with Double.NaN.")
Else
    Console.WriteLine("0 / 0 cannot be tested with Double.NaN; use Double.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. (Sin embargo, dividir un número distinto de cero por cero devuelve o PositiveInfinityNegativeInfinity, dependiendo del signo del divisor).

double zero = 0.0;
Console.WriteLine("{0} / {1} = {2}", zero, zero, zero/zero);
// The example displays the following output:
//         0 / 0 = NaN
let zero = 0.0
printfn $"{zero} / {zero} = {zero / zero}"
// The example displays the following output:
//         0 / 0 = NaN
Dim zero As Double = 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.

double nan1 = Double.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 = Double.NaN

printfn $"{3} + {nan1} = {3. + nan1}"
printfn $"abs({nan1}) = {abs nan1}"
// The example displays the following output:
//       3 + NaN = NaN
//       abs NaN = NaN
Dim nan1 As Double = Double.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. El Equality operador considera que dos NaN valores no son iguales entre sí. En general, Double los operadores no se pueden usar para comparar Double.NaN con otros Double valores, aunque los métodos de comparación (como Equals y CompareTo) pueden. En el ejemplo siguiente se muestra la diferencia de comportamiento entre Double los operadores de comparación y los métodos.

using System;

public class Example
{
   public static void Main()
   {
      Console.WriteLine("NaN == NaN: {0}", Double.NaN == Double.NaN);
      Console.WriteLine("NaN != NaN: {0}", Double.NaN != Double.NaN);
      Console.WriteLine("NaN.Equals(NaN): {0}", Double.NaN.Equals(Double.NaN));
      Console.WriteLine("! NaN.Equals(NaN): {0}", ! Double.NaN.Equals(Double.NaN));
      Console.WriteLine("IsNaN: {0}", Double.IsNaN(Double.NaN));

      Console.WriteLine("\nNaN > NaN: {0}", Double.NaN > Double.NaN);
      Console.WriteLine("NaN >= NaN: {0}", Double.NaN >= Double.NaN);
      Console.WriteLine("NaN < NaN: {0}", Double.NaN < Double.NaN);
      Console.WriteLine("NaN < 100.0: {0}", Double.NaN < 100.0);
      Console.WriteLine("NaN <= 100.0: {0}", Double.NaN <= 100.0);
      Console.WriteLine("NaN >= 100.0: {0}", Double.NaN > 100.0);
      Console.WriteLine("NaN.CompareTo(NaN): {0}", Double.NaN.CompareTo(Double.NaN));
      Console.WriteLine("NaN.CompareTo(100.0): {0}", Double.NaN.CompareTo(100.0));
      Console.WriteLine("(100.0).CompareTo(Double.NaN): {0}", (100.0).CompareTo(Double.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(Double.NaN): 1
open System

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

printfn $"\nNaN > NaN: {Double.NaN > Double.NaN}"
printfn $"NaN >= NaN: {Double.NaN >= Double.NaN}"
printfn $"NaN < NaN: {Double.NaN < Double.NaN}"
printfn $"NaN < 100.0: {Double.NaN < 100.0}"
printfn $"NaN <= 100.0: {Double.NaN <= 100.0}"
printfn $"NaN >= 100.0: {Double.NaN > 100.0}"
printfn $"NaN.CompareTo(NaN): {Double.NaN.CompareTo Double.NaN}"
printfn $"NaN.CompareTo(100.0): {Double.NaN.CompareTo 100.0}"
printfn $"(100.0).CompareTo(Double.NaN): {(100.0).CompareTo Double.NaN}"
// The example displays the following output:
//       NaN = NaN: False
//       NaN <> NaN: True
//       NaN.Equals(NaN): True
//       not (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(Double.NaN): 1
Module Example
   Public Sub Main()
      Console.WriteLine("NaN = NaN: {0}", Double.NaN = Double.NaN) 
      Console.WriteLine("NaN <> NaN: {0}", Double.NaN <> Double.NaN) 
      Console.WriteLine("NaN.Equals(NaN): {0}", Double.NaN.Equals(Double.NaN)) 
      Console.WriteLine("Not NaN.Equals(NaN): {0}", Not Double.NaN.Equals(Double.NaN)) 
      Console.WriteLine("IsNaN: {0}", Double.IsNaN(Double.NaN))
      Console.WriteLine()
      Console.WriteLine("NaN > NaN: {0}", Double.NaN > 100.0) 
      Console.WriteLine("NaN >= NaN: {0}", Double.NaN >= 100.0) 
      Console.WriteLine("NaN < NaN: {0}", Double.NaN < Double.NaN)
      Console.WriteLine("NaN < 100.0: {0}", Double.NaN < 100.0) 
      Console.WriteLine("NaN <= 100.0: {0}", Double.NaN <= 100.0) 
      Console.WriteLine("NaN >= 100.0: {0}", Double.NaN > 100.0)
      Console.WriteLine("NaN.CompareTo(NaN): {0}", Double.NaN.CompareTo(Double.Nan)) 
      Console.WriteLine("NaN.CompareTo(100.0): {0}", Double.NaN.CompareTo(100.0)) 
      Console.WriteLine("(100.0).CompareTo(Double.NaN): {0}", (100.0).CompareTo(Double.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(Double.NaN): 1

Se aplica a

Consulte también