C#의 Math.BigMul() 메서드는 두 개의 32비트 정수(int)를 곱했을 때 발생할 수 있는 오버플로우 없이 전체 곱(full product)을 계산하는 메서드입니다. 일반적인 곱셈 연산자(*)는 결과가 int 범위를 벗어나면 잘려나가지만, BigMul()은 결과를 Int64(long) 타입으로 반환하므로 큰 수의 곱셈도 안전하게 처리할 수 있습니다.
문법(Syntax)
Math.BigMul() 메서드의 기본 문법은 다음과 같습니다.
public static long BigMul (int val1, int val2);
매개변수 설명
- val1: 곱셈에 사용되는 첫 번째 32비트 정수
- val2: 곱셈에 사용되는 두 번째 32비트 정수
반환값은 두 숫자를 곱한 전체 결과를 담은 long(Int64) 값입니다.
예제 1
아래 예제는 Int32의 최댓값(Int32.MaxValue) 두 개를 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억(2,147,483,647)으로, 이 값을 일반 int 곱셈으로 계산하면 오버플로우가 발생하지만, 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() 메서드는 다음과 같은 상황에서 특히 유용합니다.
- 두 int 값의 곱이 int 범위(-21억 ~ +21억)를 초과할 가능성이 있을 때
- 오버플로우로 인한 데이터 손실 없이 정확한 곱셈 결과가 필요할 때
- 큰 수 연산을 별도의 라이브러리 없이 간단히 처리하고 싶을 때
.NET Core 3.0 이상 및 .NET Standard 2.1 이상 환경에서 사용할 수 있으며, 금융 계산, 해시 알고리즘, 과학적 계산 등 정밀한 곱셈이 필요한 분야에서 활용됩니다.