C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のDouble.IsNaN()メソッドの使い方を徹底解説

C#のDouble.IsNaN()メソッドは、指定された値が数値ではない(NaN:Not a Number)かどうかを判定し、その結果をbool型で返す静的メソッドです。浮動小数点演算の結果が不正な値になったかどうかを確認したい場面で活躍します。

構文

Double.IsNaN()メソッドの構文は以下の通りです。

public static bool IsNaN (double val);

引数 val には、判定対象となる倍精度浮動小数点数(double)を指定します。戻り値は、valがNaNの場合にtrue、それ以外の場合にfalseとなります。

使用例1:正の無限大の場合

まず、無限大になる演算結果に対してIsNaN()メソッドを使用する例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        double d = 1.0/0.0;
        Console.WriteLine("Double Value = "+d);
        Console.WriteLine("HashCode of Double Value = "+d.GetHashCode());
        TypeCode type = d.GetTypeCode();
        Console.WriteLine("TypeCode of Double Value = "+type);
        Console.WriteLine("Positive Infinity? = "+Double.IsInfinity(d));
        Console.WriteLine("Check whether the specified value is NaN? = "+Double.IsNaN(d));
    }
}

出力結果

このコードを実行すると、以下のような出力が得られます。

Double Value = ∞
HashCode of Double Value = 2146435072
TypeCode of Double Value = Double
Positive Infinity? = True
Check whether the specified value is NaN? = False

1.0/0.0 の演算結果は正の無限大(∞)となるため、Double.IsInfinity()trueを返し、Double.IsNaN()falseを返しています。このことから、無限大はNaNとして扱われないことが分かります。

使用例2:0による除算でNaNになる場合

次に、0.0/0のように不定形となる演算を行った場合の例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        double d = 0.0/0;
        Console.WriteLine("Double Value = "+d);
        Console.WriteLine("HashCode of Double Value = "+d.GetHashCode());
        TypeCode type = d.GetTypeCode();
        Console.WriteLine("TypeCode of Double Value = "+type);
        Console.WriteLine("Positive Infinity? = "+Double.IsInfinity(d));
        Console.WriteLine("Check whether the specified value is NaN? = "+Double.IsNaN(d));
    }
}

出力結果

このコードを実行すると、以下の出力が得られます。

Double Value = NaN
HashCode of Double Value = -524288
TypeCode of Double Value = Double
Positive Infinity? = False
Check whether the specified value is NaN? = True

0.0/0 は数学的に定義できない演算のため、結果はNaNになります。このためDouble.IsNaN()trueを返し、Double.IsInfinity()falseを返します。

まとめ

  • Double.IsNaN()メソッドは、指定したdouble値がNaNかどうかを判定する静的メソッドである。
  • NaNは「0÷0」など数学的に定義できない演算の結果として生成される。
  • 無限大(∞)はNaNではなく、別の値として扱われるため注意が必要。
  • NaN同士の比較は常にfalseになるため、等価演算子ではなく必ずIsNaN()メソッドを使って判定するのが安全である。
  1. C#のContainsKey()メソッドとは?Hashtableでキーの存在を確認する方法

    C#のContainsKey()メソッドは、Hashtableコレクション内に指定したキーが存在するかどうかを確認するための便利なメソッドです。キーが存在する場合はTrue、存在しない場合はFalseを返します。ContainsKey()メソッドの基本的な使い方まず、Hashtableコレクションを作成し、いくつかの要素を追加してみましょう。Hashtable h = new Hashtable(); h.Add(1, Sam); h.Add(2, Jack); h.Add(3, Andy); h.Add(4, Katie); h.Add(5, Beth); h.Add(6, Benjamin

  2. C#のSequenceEqualメソッドの使い方を徹底解説!コレクションの等価性を判定する方法

    C#のSequenceEqualメソッドは、2つのコレクションが等しいかどうかを判定するために使用されるLINQのメソッドです。要素の数だけでなく、順序も含めて各要素が一致しているかどうかを比較し、結果をbool型(true / false)で返します。このメソッドを使用するには、System.Linq名前空間が必要です。配列やリストなど、IEnumerableインターフェースを実装するあらゆるコレクションに対して利用できます。サンプルデータの準備まず、3つの文字列配列を用意してみましょう。string[] arr1 = { This, is, it }; string[] arr2 = {