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

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

C#のDecimal.Multiply()メソッドは、指定された2つのDecimal型(10進数)の値を乗算するために使用される静的メソッドです。金額計算など、浮動小数点数では誤差が問題になる場面で、正確な10進演算を行いたい場合に活用できます。

構文

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

public static decimal Multiply (decimal val1, decimal val2);

パラメータ

  • val1: 被乗数(掛けられる側の値)
  • val2: 乗数(掛ける側の値)

このメソッドは、val1 × val2 の計算結果をdecimal型で返します。戻り値がDecimal型の有効範囲(約 ±7.9228 × 10^28)を超えた場合は、OverflowExceptionがスローされます。

使用例1:基本的な乗算

まずは、Decimal.Multiply()メソッドを使った基本的な例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        Decimal val1 = 3.45m;
        Decimal val2 = 2.35m;
        Console.WriteLine("Decimal 1 = "+val1);
        Console.WriteLine("Decimal 2 = "+val2);
        Decimal res = Decimal.Multiply(val1, val2);
        Console.WriteLine("Result (Multiplication) = "+res);
    }
}

出力結果

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

Decimal 1 = 3.45
Decimal 2 = 2.35
Result (Multiplication) = 8.1075

このように、3.45 × 2.35 = 8.1075 という正確な計算結果が得られます。double型やfloat型を使用した場合に発生しうる丸め誤差がないため、金融計算などに適しています。

使用例2:オーバーフロー時の挙動

続いて、計算結果がDecimal型の範囲を超える場合の動作を確認してみましょう。

using System;
public class Demo {
    public static void Main(){
        Decimal val1 = Decimal.MinValue;
        Decimal val2 = 1.21m;
        Console.WriteLine("Decimal 1 = "+val1);
        Console.WriteLine("Decimal 2 = "+val2);
        Decimal res = Decimal.Multiply(val1, val2);
        Console.WriteLine("Result (Multiplication) = "+res);
    }
}

出力結果

Decimal.MinValue(Decimal型が表現できる最小値)に1.21を掛けると、結果がDecimal型の範囲を超えるため、実行時に例外が発生します。

Decimal 1 = -79228162514264337593543950335
Decimal 2 = 1.21
Run-time exception (line 13): Value was either too large or too small for a Decimal.
Stack Trace:
[System.OverflowException: Value was either too large or too small for a Decimal.]
    at System.Decimal.FCallMultiply(Decimal& d1, Decimal& d2)
    at System.Decimal.Multiply(Decimal d1, Decimal d2)
    at Demo.Main() :line 13

このように、乗算の結果がDecimal型の有効範囲(約±79,228,162,514,264,337,593,543,950,335)を超えると、System.OverflowExceptionがスローされます。大きな値を扱う可能性がある場合は、try-catchブロックで例外処理を行うか、事前に値の範囲をチェックすることをおすすめします。

まとめ

  • Decimal.Multiply()は、2つのDecimal値を正確に乗算する静的メソッドである
  • 引数には被乗数(val1)と乗数(val2)を指定する
  • 結果がDecimal型の範囲を超えるとOverflowExceptionが発生する
  • 金額計算など高精度な10進演算が必要な場面で特に有用
  1. C#のDecimal.Floor()メソッドの使い方を徹底解説

    概要C#のDecimal.Floor()メソッドは、指定されたDecimal型の数値を「負の無限大方向」に向かって最も近い整数へ丸める静的メソッドです。正の数であれば小数点以下がそのまま切り捨てられますが、負の数の場合はより小さい整数側へ丸められる点に注意が必要です。構文構文は以下のとおりです。public static decimal Floor (decimal val);引数valには、丸めの対象となるDecimal型の値を指定します。使用例1:正の数の場合まず、正のDecimal値に対してDecimal.Floor()メソッドを使用する例を見てみましょう。using System; p

  2. C#のDecimal.Divide()メソッドとは?構文と使い方をサンプルコード付きで解説

    C#のDecimal.Divide()メソッドは、指定された2つのDecimal型の値を除算するための静的メソッドです。金額計算など、浮動小数点誤差を避けたい正確な10進数演算が必要な場面で活用されます。 構文 Decimal.Divide()メソッドの構文は以下の通りです。 public static decimal Divide (decimal val1, decimal val2); 各パラメータの意味は次の通りです。 val1:被除数(割られる数) val2:除数(割る数) 戻り値は、val1をval2で割った結果を表すdecimal型の値です。なお、val2に0を指定した場合は