Double.NaN Veld
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Vertegenwoordigt een waarde die geen getal (NaN) is. Dit veld is constant.
public: double NaN = NaN;
public const double NaN = NaN;
val mutable NaN : double
Public Const NaN As Double = NaN
Waarde van veld
Value = NaNVoorbeelden
In het volgende voorbeeld ziet u het gebruik van 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
Opmerkingen
Een methode of operator retourneert NaN wanneer het resultaat van een bewerking niet is gedefinieerd. Het resultaat van het delen van nul door nul is NaNbijvoorbeeld, zoals in het volgende voorbeeld wordt weergegeven. (Het delen van een niet-nulgetal door nul retourneert echter een PositiveInfinity of NegativeInfinity, afhankelijk van het teken van de deler.)
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
Daarnaast retourneert NaNeen methodeaanroep met een NaN waarde of een bewerking op een NaN waarde, zoals in het volgende voorbeeld wordt weergegeven.
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
Gebruik de IsNaN methode om te bepalen of een waarde geen getal is. De Equality operator beschouwt twee NaN waarden als ongelijk. In het algemeen Double kunnen operators niet worden gebruikt om te vergelijken Double.NaN met andere Double waarden, hoewel vergelijkingsmethoden (zoals Equals en CompareTo) wel kunnen. In het volgende voorbeeld ziet u het verschil in gedrag tussen Double vergelijkingsoperatoren en methoden.
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