Double.NaN フィールド

定義

非数 (NaN) の値を表します。Represents a value that is not a number (NaN). このフィールドは定数です。This field is constant.

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

フィールド値

Double

NaN の使用例を次に示します。The following example illustrates the use of 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." );
}
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.");
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 ます。A method or operator returns NaN when the result of an operation is undefined. たとえば、0を0で除算した結果は NaN 、次の例に示すように、になります。For example, the result of dividing zero by zero is NaN, as the following example shows. (ただし、0以外の数値を0で除算すると PositiveInfinity NegativeInfinity 、除数の符号に応じてまたはのいずれかが返されます)。(But note that dividing a non-zero number by zero returns either PositiveInfinity or NegativeInfinity, depending on the sign of the divisor.)

double zero = 0.0;
Console.WriteLine("{0} / {1} = {2}", 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 れます。In addition, a method call with a NaN value or an operation on a NaN value returns NaN, as the following example shows.

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
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値が数値でないかどうかを判断するには、メソッドを使用します。Use the IsNaN method to determine whether a value is not a number. 演算子は、 Equality 2 つの NaN 値が互いに等しくないと見なします。The Equality operator considers two NaN values to be unequal to one another. 一般に、 Double 演算子を使用して他の値と比較することはできません Double.NaN が、 Double 比較メソッド ( Equals やなど CompareTo ) は使用できます。In general, Double operators cannot be used to compare Double.NaN with other Double values, although comparison methods (such as Equals and CompareTo) can. 次の例は、比較演算子とメソッド間の動作の違いを示してい Double ます。The following example illustrates the difference in behavior between Double comparison operators and methods.

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

適用対象

こちらもご覧ください