Double.NaN Поле

Определение

Представляет значение, которое не является числом (NaN). Это поле является константой.

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

Значение поля

Value = NaN

Примеры

В следующем примере показано использование 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.");
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

Комментарии

Метод или оператор возвращаются NaN , когда результат операции не определен. Например, результат деления нуля на ноль, NaNкак показано в следующем примере. (Однако деление ненулевого числа на ноль возвращает PositiveInfinity или NegativeInfinityв зависимости от знака делителя.)

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

Кроме того, вызов метода со значением NaN или операцией со NaN значением возвращается NaN, как показано в следующем примере.

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

IsNaN Используйте метод, чтобы определить, не является ли значение числом. Оператор Equality считает, что два NaN значения не равны друг другу. Как правило, Double операторы нельзя использовать для сравнения Double.NaN с другими Double значениями, хотя методы сравнения (например Equals , и CompareTo) могут. В следующем примере показано различие в поведении между Double операторами сравнения и методами.

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

Применяется к

См. также раздел