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

C#のMath.BigMul()メソッドとは?構文と使い方を実例付きで解説

C#のMath.BigMul()メソッドは、2つの32ビット整数(int型)の積をオーバーフローすることなく完全に計算するためのメソッドです。通常の乗算では結果がint型の範囲を超えるとオーバーフローが発生しますが、このメソッドを使えば結果を64ビット整数(Int64 / long型)として正確に取得できます。

構文

Math.BigMul()メソッドの構文は以下のとおりです。

public static long BigMul (int val1, int val2);

パラメータ

  • val1:乗算する1つ目の数値(int型)
  • val2:乗算する2つ目の数値(int型)

戻り値:val1とval2の積を表すlong型(Int64)の値を返します。

使用例1

まず、int型の最大値同士を乗算する例を見てみましょう。このような大きな値の積はint型では表現できないため、Math.BigMul()メソッドが役立ちます。

using System;
public class Demo {
   public static void Main(){
      int val1 = Int32.MaxValue;
      int val2 = Int32.MaxValue;
      Console.WriteLine("Product of two numbers = " + Math.BigMul(val1, val2));
   }
}

出力

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

Product of two numbers = 4611686014132420609

Int32.MaxValueは約21.4億であるため、その2乗はint型の最大値(約21.4億)を大きく超えますが、Math.BigMul()を使用すればlong型として正確な結果が得られています。

使用例2

続いて、別の値を使った例です。

using System;
public class Demo {
   public static void Main(){
      Int32 val1 = 139897778;
      Int32 val2 = 217878786;
      Console.WriteLine("Product of two numbers = " + Math.BigMul(val1, val2));
   }
}

出力

このコードを実行すると、次の結果が出力されます。

Product of two numbers = 30480758034737508

まとめ

Math.BigMul()メソッドは、32ビット整数同士の乗算結果がint型の範囲を超える可能性がある場合に、オーバーフローを回避して正確な計算結果を得るために非常に便利なメソッドです。大きな数値を扱う科学技術計算や金額計算など、精度が求められる場面で活用しましょう。

  1. C#のMath.DivRem()メソッドの使い方を徹底解説!商と余りを同時に取得する方法

    C#のMath.DivRem()メソッドは、2つの数値の除算を行って商(quotient)を返すとともに、余り(remainder)をoutパラメータとして受け取ることができる便利なメソッドです。通常、商と余りの両方を求めるには「/」演算子と「%」演算子を別々に使う必要がありますが、このメソッドを使えば一度の呼び出しで両方の結果を取得できます。構文public static int DivRem(int dividend, int divisor, out int remainder); public static long DivRem(long dividend, long divisor

  2. C#のMath.BigMulメソッドとは?使い方をサンプルコード付きで解説

    C#のMath.BigMul()メソッドを使うと、2つの32ビット整数(int型)の積を求めることができます。通常の乗算ではオーバーフローしてしまうような大きな値同士の掛け算でも、結果を64ビット整数(long型)として正確に取得できるのが大きな特徴です。 Math.BigMulメソッドの基本 Math.BigMul(int a, int b)は、引数として渡された2つのint型の完全な積をlong型で返します。2つのint型の積は最大で約9.2×1018になる可能性があり、int型の範囲(約±21億)では表現しきれないため、戻り値は必ずlong型で受け取る必要があります。 サンプルコード