C#のSingle.IsNegativeInfinity()メソッドを例とともに解説
C#のSingle.IsNegativeInfinity()メソッドは、指定された数値が負の無限大(Negative Infinity)に評価されるかどうかを示す値を返します。浮動小数点数の演算結果が「-∞」になったかどうかを判定したい場合に便利なメソッドです。
構文
このメソッドの構文は以下の通りです。
public static bool IsNegativeInfinity (float val);
パラメータ val には、判定対象となる単精度浮動小数点数(float)を指定します。戻り値はbool型で、値が負の無限大であれば true、そうでなければ false を返します。
使用例1
まずは基本的な使用例を見てみましょう。正の無限大とNaN(非数)を生成し、それぞれに対して各種判定メソッドを実行しています。
using System;
public class Demo {
public static void Main() {
float f1 = 5.0f/0.0f;
float f2 = 0.0f/0.0f;
Console.WriteLine("Value1 = "+f1);
Console.WriteLine("Hashcode for Value1 = "+f1.GetHashCode());
Console.WriteLine("TypeCode for Value1 = "+f1.GetTypeCode());
Console.WriteLine("Is Value1 value is positive or negative infinity? = "+Single.IsInfinity(f1));
Console.WriteLine("Is Value1 NaN? = "+Single.IsNaN(f1));
Console.WriteLine("Is Value1 a negative infinity? = "+Single.IsNegativeInfinity(f1));
Console.WriteLine("\nValue2 = "+f2);
Console.WriteLine("Hashcode for Value2 = "+f2.GetHashCode());
Console.WriteLine("TypeCode for Value2 = "+f2.GetTypeCode());
Console.WriteLine("Is Value2 value is positive or negative infinity? = "+Single.IsInfinity(f2));
Console.WriteLine("Is Value2 NaN? = "+Single.IsNaN(f2));
Console.WriteLine("Is Value2 a negative infinity? = "+Single.IsNegativeInfinity(f2));
}
}出力結果
上記のコードを実行すると、次のような出力が得られます。
Value1 = ∞ Hashcode for Value1 = 2139095040 TypeCode for Value1 = Single Is Value1 value is positive or negative infinity? = True Is Value1 NaN? = False Is Value1 a negative infinity? = False Value2 = NaN Hashcode for Value2 = -4194304 TypeCode for Value2 = Single Is Value2 value is positive or negative infinity? = False Is Value2 NaN? = True Is Value2 a negative infinity? = False
この例では、5.0f/0.0f の結果は正の無限大(+∞)になるため、IsInfinity() は True を返しますが、IsNegativeInfinity() は False を返します。また、0.0f/0.0f の結果はNaNになるため、いずれの無限大判定も False となり、IsNaN() のみが True を返します。
使用例2
次に、負の無限大が実際に生成されるケースを見てみましょう。負の数をゼロで除算した場合と、Single.MinValue の場合を比較しています。
using System;
public class Demo {
public static void Main() {
float f1 = -25.0f/0.0f;
float f2 = Single.MinValue;
Console.WriteLine("Value1 = "+f1);
Console.WriteLine("Hashcode for Value1 = "+f1.GetHashCode());
Console.WriteLine("TypeCode for Value1 = "+f1.GetTypeCode());
Console.WriteLine("Is Value1 value is positive or negative infinity? = "+Single.IsInfinity(f1));
Console.WriteLine("Is Value1 NaN? = "+Single.IsNaN(f1));
Console.WriteLine("Is Value1 a negative infinity? = "+Single.IsNegativeInfinity(f1));
Console.WriteLine("\nValue2 = "+f2);
Console.WriteLine("Hashcode for Value2 = "+f2.GetHashCode());
Console.WriteLine("TypeCode for Value2 = "+f2.GetTypeCode());
Console.WriteLine("Is Value2 value is positive or negative infinity? = "+Single.IsInfinity(f2));
Console.WriteLine("Is Value2 NaN? = "+Single.IsNaN(f2));
Console.WriteLine("Is Value2 a negative infinity? = "+Single.IsNegativeInfinity(f2));
}
}出力結果
実行すると、以下の出力が得られます。
Value1 = -∞ Hashcode for Value1 = -8388608 TypeCode for Value1 = Single Is Value1 value is positive or negative infinity? = True Is Value1 NaN? = False Is Value1 a negative infinity? = True Value2 = -3.402823E+38 Hashcode for Value2 = -8388609 TypeCode for Value2 = Single Is Value2 value is positive or negative infinity? = False Is Value2 NaN? = False Is Value2 a negative infinity? = False
ポイントのまとめ
-25.0f/0.0fのように負の値をゼロで除算すると、結果は負の無限大(-∞)になり、IsNegativeInfinity()はTrueを返します。Single.MinValue(約 -3.402823E+38)はfloat型で表現できる最小の有限値であり、無限大ではないため、IsNegativeInfinity()はFalseを返します。- 類似メソッドとして、正または負の無限大を判定する
Single.IsInfinity()、非数を判定するSingle.IsNaN()も合わせて覚えておくと便利です。
-
C#のInt32.GetHashCode()メソッドとは?使い方をサンプルコード付きで解説
C#におけるInt32.GetHashCode()メソッドは、現在のint型インスタンスに対応するハッシュコードを返すメソッドです。ハッシュコードは、HashtableやDictionaryなどのハッシュベースのコレクションでオブジェクトを効率的に検索・管理するために利用される数値です。構文このメソッドの構文は以下の通りです。public override int GetHashCode();戻り値int型の値そのものに対応する32ビット符号付き整数のハッシュコードが返されます。なお、Int32の場合、ハッシュコードは元の値と同じ数値になります。これは、整数値自身がそのまま有効なハッシュコード
-
C#のInt16.GetHashCode()メソッドとは?使い方を実例付きで解説
C#におけるInt16.GetHashCode()メソッドは、現在のInt16インスタンス(short型の値)に対応するハッシュコードを返すためのメソッドです。ハッシュコードは、ハッシュテーブルなどのデータ構造でオブジェクトを効率的に管理する際に利用される整数値です。構文このメソッドの構文は以下のとおりです。public override int GetHashCode ();使用例1:基本的なハッシュコードの取得まずは、Int16.GetHashCode()メソッドを使って2つのshort型変数のハッシュコードを取得する基本的な例を見てみましょう。using System; public c