C#의 Decimal.Remainder() 메서드는 두 Decimal 값으로 나눗셈을 수행한 뒤, 그 결과의 나머지를 계산하는 데 사용됩니다. 일반적인 정수 나눗셈에서 사용하는 % 연산자와 유사한 역할을 하지만, Decimal 타입의 높은 정밀도를 그대로 유지한다는 점이 특징입니다.
구문(Syntax)
Decimal.Remainder() 메서드의 기본 구문은 다음과 같습니다.
public static decimal Remainder (decimal val1, decimal val2);
여기서 val1은 피제수(나누어지는 수), val2는 제수(나누는 수)를 의미합니다.
주요 특징
- 반환값은 val1을 val2로 나눈 나머지이며, 부호는 항상 피제수(val1)의 부호를 따릅니다.
- 제수(val2)가 0이면
DivideByZeroException이 발생하므로 사전에 값 검증이 필요합니다. - Decimal 타입의 정밀도를 유지하므로 금융 계산 등 소수점 오차에 민감한 작업에 적합합니다.
예제 1
다음은 Decimal.Remainder() 메서드를 실제로 구현한 첫 번째 예제입니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = 45.15m;
Decimal val2 = 15.15m;
Console.WriteLine("Decimal 1 = "+val1);
Console.WriteLine("Decimal 2 = "+val2);
Console.WriteLine("After Division = "+(Decimal.Divide(val1,val2)));
Console.WriteLine("Remainder = "+(Decimal.Remainder(val1,val2)));
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Decimal 1 = 45.15 Decimal 2 = 15.15 After Division = 2.9801980198019801980198019802 Remainder = 14.85
출력에서 확인할 수 있듯이, 45.15를 15.15로 나눈 몫은 약 2.98이며, 나머지는 14.85로 정확하게 계산됩니다.
예제 2
이번에는 두 값이 동일한 경우의 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = 1.00m;
Decimal val2 = 1.00m;
Console.WriteLine("Decimal 1 = "+val1);
Console.WriteLine("Decimal 2 = "+val2);
Console.WriteLine("After Division = "+(Decimal.Divide(val1,val2)));
Console.WriteLine("Remainder = "+(Decimal.Remainder(val1,val2)));
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Decimal 1 = 1.00 Decimal 2 = 1.00 After Division = 1 Remainder = 0.00
두 값이 같으면 나눗셈의 결과가 1이 되고, 나머지는 자연스럽게 0.00이 됩니다.
정리
Decimal.Remainder() 메서드는 Decimal 타입 간 나눗셈의 나머지를 정확하게 구해야 할 때 유용합니다. 특히 소수점 이하 정밀도가 중요한 회계·금융 도메인에서 % 연산자 대신 이 메서드를 활용하면 예측 가능하고 안정적인 결과를 얻을 수 있습니다.