Single.NaN Champ
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente une valeur autre qu'un nombre (NaN
). Ce champ est constant.
public: float NaN = NaN;
public const float NaN = NaN;
val mutable NaN : single
Public Const NaN As Single = NaN
Valeur de champ
Value = NaNExemples
L’exemple suivant illustre 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
Remarques
Une méthode ou un opérateur retourne NaN lorsque le résultat d’une opération n’est pas défini. Par exemple, le résultat de la division de zéro par zéro est NaN, comme le montre l’exemple suivant. (Mais notez que la division d’un nombre autre que zéro par zéro renvoie PositiveInfinity ou NegativeInfinity, en fonction du signe du diviseur.)
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
En outre, un appel de méthode avec une NaN valeur ou une opération sur une NaN valeur retourne NaN, comme le montre l’exemple suivant.
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
Utilisez la IsNaN méthode pour déterminer si une valeur n’est pas un nombre. En général, Single les opérateurs ne peuvent pas être utilisés pour comparer Single.NaN avec d’autres Single valeurs, bien que les méthodes de comparaison (telles que Equals et CompareTo) puissent le faire. L’exemple suivant illustre la différence de comportement entre Single les opérateurs de comparaison et les méthodes.
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