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

C#のSingle.IsInfinity()メソッドとは?使い方をサンプルコードで解説

C#のSingle.IsInfinity()メソッドは、指定された数値が正の無限大(+∞)または負の無限大(-∞)と評価されるかどうかを示すbool値を返すメソッドです。浮動小数点数の演算結果が無限大になったかどうかを判定したい場合に活用できます。

構文

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

public static bool IsInfinity (float val);

引数valには、判定対象となる単精度浮動小数点数(float型)を指定します。戻り値は、valが正または負の無限大であればtrue、そうでなければfalseとなります。

使用例1:通常の数値とSingle.MaxValueの場合

まず、通常の浮動小数点数とfloat型の最大値(Single.MaxValue)を指定した場合の動作を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      float f1 = 19.3f;
      float f2 = Single.MaxValue;
      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("\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));
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Value1 = 19.3
Hashcode for Value1 = 1100637798
TypeCode for Value1 = Single
Is Value1 value is positive or negative infinity? = False
Value2 = 3.402823E+38
Hashcode for Value2 = 2139095039
TypeCode for Value2 = Single
Is Value2 value is positive or negative infinity? = False

この例では、19.3という通常の数値も、float型で表現できる最大値であるSingle.MaxValue(約3.402823E+38)も、どちらも無限大ではないため、IsInfinity()メソッドはFalseを返しています。

使用例2:ゼロ除算とSingle.MinValueの場合

次に、ゼロ除算によって無限大が発生するケースと、float型の最小値(Single.MinValue)を指定した場合の動作を確認します。

using System;
public class Demo {
   public static void Main(){
      float f1 = 5.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("\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));
   }
}

出力結果

実行結果は以下の通りです。

Value1 = ∞
Hashcode for Value1 = 2139095040
TypeCode for Value1 = Single
Is Value1 value is positive or negative infinity? = True
Value2 = -3.402823E+38
Hashcode for Value2 = -8388609
TypeCode for Value2 = Single
Is Value2 value is positive or negative infinity? = False

この例では、5.0f/0.0fというゼロ除算の結果が正の無限大(+∞)となったため、IsInfinity()メソッドはTrueを返しています。一方、Single.MinValueはfloat型で表現できる最小値(約-3.402823E+38)であり、無限大ではないためFalseとなります。

まとめ

Single.IsInfinity()メソッドを使うことで、浮動小数点数が正または負の無限大かどうかを簡単に判定できます。特にゼロ除算などの演算結果の検証に便利です。なお、より細かく判定したい場合は、正の無限大のみを判定するSingle.IsPositiveInfinity()や、負の無限大のみを判定するSingle.IsNegativeInfinity()といった関連メソッドも用意されていますので、用途に応じて使い分けるとよいでしょう。

  1. C#のConsole.SetBufferSize()メソッドの使い方を徹底解説

    C#におけるConsole.SetBufferSize()メソッドは、コンソール画面のバッファ領域(スクリーンバッファ)の幅と高さを指定した値に設定するために使用されるメソッドです。コンソールアプリケーションで表示領域をカスタマイズしたい場合に活用できます。構文Console.SetBufferSize()メソッドの構文は以下の通りです。public static void SetBufferSize (int width, int height);各パラメータの意味は次のようになっています。width: バッファ領域の幅(列数)を指定します。height: バッファ領域の高さ(行数)を指定し

  2. C#のConsole.ResetColor()メソッドの使い方を解説

    概要C#のConsole.ResetColor()メソッドは、コンソールの前景色(文字色)と背景色を、既定の配色に戻すために使用されます。プログラム内で一時的に文字色や背景色を変更した後、元の状態へ復元したい場合に非常に便利です。構文ResetColor()メソッドの構文は以下のとおりです。public static void ResetColor ();このメソッドは引数を受け取らず、戻り値もありません。また、staticメソッドであるため、インスタンスを生成することなく、Consoleクラスから直接呼び出すことができます。使用例それでは、C#でConsole.ResetColor()メソッ