Auf Englisch lesen

Freigeben über


Double.NaN Feld

Definition

Stellt einen Wert dar, der keine Zahl ist (NaN). Dieses Feld ist konstant.

C#
public const double NaN = NaN;

Feldwert

Value = NaN

Beispiele

Im folgenden Beispiel wird die Verwendung von NaN veranschaulicht.

C#
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.");

Hinweise

Eine Methode oder ein Operator gibt zurück NaN , wenn das Ergebnis eines Vorgangs nicht definiert ist. Das Ergebnis der Division null durch null ist NaNbeispielsweise , wie im folgenden Beispiel gezeigt. (Allerdings gibt das Dividieren einer Nicht-Null-Zahl durch null je nach Vorzeichen des Divisors entweder PositiveInfinity oder NegativeInfinityzurück.)

C#
double zero = 0.0;
Console.WriteLine("{0} / {1} = {2}", zero, zero, zero/zero);
// The example displays the following output:
//         0 / 0 = NaN

Darüber hinaus gibt ein Methodenaufruf mit einem NaN Wert oder einem Vorgang für einen NaN Wert zurück NaN, wie im folgenden Beispiel gezeigt.

C#
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

Verwenden Sie die IsNaN -Methode, um zu bestimmen, ob ein Wert keine Zahl ist. Der Equality Operator betrachtet zwei NaN Werte als ungleich zueinander. Im Allgemeinen Double können Operatoren nicht zum Vergleichen Double.NaN mit anderen Double Werten verwendet werden, obwohl Vergleichsmethoden (z Equals . B. und CompareTo) möglich sind. Im folgenden Beispiel wird der Unterschied im Verhalten zwischen Double Vergleichsoperatoren und -methoden veranschaulicht.

C#
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

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Weitere Informationen