# Single.NaN フィールド

## 定義

``public: float NaN = NaN;``
``public const float NaN = NaN;``
``val mutable NaN : single``
``Public Const NaN As Single  = NaN``

Value = NaN

## 例

``````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
``````

## 注釈

メソッドまたは演算子は、 NaN 操作の結果が未定義の場合に を返します。 たとえば、次の例に示すように、0 を 0 で除算した結果は NaNです。 (ただし、0 以外の数値を 0 で除算すると、除数の符号に応じて または NegativeInfinityPositiveInfinity返されることに注意してください)。

``````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
``````

さらに、次の例に示すように、 NaN 値または値に対する操作を含む NaN メソッド呼び出しは を返 NaNします。

``````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
``````

メソッドを IsNaN 使用して、値が数値ではないかどうかを判断します。 一般に、Single演算子を使用して他Singleの値と比較Single.NaNすることはできませんが、比較メソッド (や CompareToなどEquals) を使用できます。 次の例は、比較演算子とメソッドの動作 Single の違いを示しています。

``````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
``````