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

C#のSingle.IsPositiveInfinity()メソッドの使い方をサンプルコード付きで解説

C#のSingle.IsPositiveInfinity()メソッドは、指定された単精度浮動小数点数(float)が正の無限大(Positive Infinity)と評価されるかどうかを示すbool値を返します。ゼロ除算などの演算によって値が正の無限大になったかどうかをプログラム内で判定したい場合に便利なメソッドです。

構文

構文は以下の通りです。

public static bool IsPositiveInfinity (float val);

パラメータvalには、判定対象となる単精度浮動小数点数を指定します。戻り値は、valが正の無限大であればtrue、それ以外(負の無限大・有限の数値・NaNなど)であればfalseとなります。

注意ポイント

  • 負の無限大に対してはfalseを返します(正負どちらの無限大でもtrueを返すIsInfinity()メソッドとは挙動が異なります)。
  • NaN(非数)に対してもfalseを返します。

サンプルコード1

まずは基本的な使用例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      float f1 = -25.0f/0.0f;
      float f2 = 5.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 positive infinity? = "+Single.IsPositiveInfinity(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 positive infinity? = "+Single.IsPositiveInfinity(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 positive infinity? = False
Value2 = ∞
Hashcode for Value2 = 2139095040
TypeCode for Value2 = Single
Is Value2 value is positive or negative infinity? = True
Is Value2 NaN? = False
Is Value2 a positive infinity? = True

この例では、f1は「-25.0f / 0.0f」という負の値をゼロで割った計算結果のため負の無限大となり、IsPositiveInfinity()はFalseを返します。一方、f2は「5.0f / 0.0f」という正の値をゼロで割った計算結果のため正の無限大となり、IsPositiveInfinity()はTrueを返します。両者ともIsInfinity()ではTrueになっている点にも注目してください。

サンプルコード2

続いて、別の例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      float f1 = 10.0f/0.0f;
      float f2 = -3.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 positive infinity? = "+Single.IsPositiveInfinity(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 positive infinity? = "+Single.IsPositiveInfinity(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 positive infinity? = True
Value2 = -3
Hashcode for Value2 = -1069547520
TypeCode for Value2 = Single
Is Value2 value is positive or negative infinity? = False
Is Value2 NaN? = False
Is Value2 a positive infinity? = False

2つ目の例では、f1は「10.0f / 0.0f」の結果として正の無限大になるため、IsPositiveInfinity()はTrueを返します。一方、f2は通常の有限の値「-3」であるため、IsInfinity()・IsNaN()・IsPositiveInfinity()のいずれもFalseとなります。

まとめ

Single.IsPositiveInfinity()メソッドを使うことで、float型の値が正の無限大かどうかを簡単に判定できます。ゼロ除算の結果チェックなど、浮動小数点演算の異常値ハンドリングにぜひ活用してみてください。

  1. C#のInt32.GetHashCode()メソッドとは?使い方をサンプルコード付きで解説

    C#におけるInt32.GetHashCode()メソッドは、現在のint型インスタンスに対応するハッシュコードを返すメソッドです。ハッシュコードは、HashtableやDictionaryなどのハッシュベースのコレクションでオブジェクトを効率的に検索・管理するために利用される数値です。構文このメソッドの構文は以下の通りです。public override int GetHashCode();戻り値int型の値そのものに対応する32ビット符号付き整数のハッシュコードが返されます。なお、Int32の場合、ハッシュコードは元の値と同じ数値になります。これは、整数値自身がそのまま有効なハッシュコード

  2. C#のInt16.GetHashCode()メソッドとは?使い方を実例付きで解説

    C#におけるInt16.GetHashCode()メソッドは、現在のInt16インスタンス(short型の値)に対応するハッシュコードを返すためのメソッドです。ハッシュコードは、ハッシュテーブルなどのデータ構造でオブジェクトを効率的に管理する際に利用される整数値です。構文このメソッドの構文は以下のとおりです。public override int GetHashCode ();使用例1:基本的なハッシュコードの取得まずは、Int16.GetHashCode()メソッドを使って2つのshort型変数のハッシュコードを取得する基本的な例を見てみましょう。using System; public c