Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#의 Decimal.Multiply() 메서드 사용법과 예제

C#의 Decimal.Multiply() 메서드는 지정된 두 개의 Decimal 값을 곱하는 데 사용되는 정적(static) 메서드입니다. 이 메서드는 두 피연산자를 곱한 결과를 새로운 decimal 값으로 반환하며, 연산 결과가 decimal 타입이 표현할 수 있는 범위를 벗어나면 OverflowException이 발생합니다.

구문(Syntax)

Decimal.Multiply() 메서드의 기본 구문은 다음과 같습니다.

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

여기서 val1은 피승수(multiplicand), val2는 승수(multiplier)입니다.

예제 1: 기본적인 곱셈 연산

다음 예제는 Decimal.Multiply() 메서드를 사용하여 두 개의 decimal 값을 곱하는 방법을 보여줍니다.

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

예제 2: 오버플로우 예외(OverflowException) 발생

Decimal 타입에는 표현 가능한 값의 한계가 있습니다. 곱셈 결과가 이 범위를 초과하면 런타임 시 OverflowException이 발생합니다. 아래 예제에서 Decimal.MinValue(약 -7.9 × 10^28)에 1.21을 곱하면 범위를 초과하여 예외가 발생하는 것을 확인할 수 있습니다.

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 타입의 허용 범위를 초과하여 다음과 같은 예외가 발생합니다.

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.Multiply() 메서드는 C#에서 decimal 값의 곱셈을 수행할 때 유용하게 사용됩니다. 특히 금융 계산처럼 정확한 소수점 연산이 필요한 경우 double이나 float 대신 decimal 타입을 활용하는 것이 좋습니다. 단, 연산 결과가 decimal의 최댓값 또는 최솟값 범위를 벗어날 수 있는 상황이라면 try-catch 블록으로 OverflowException을 처리하거나, 사전에 checked 컨텍스트와 범위 검증 로직을 추가하는 것이 안전합니다.