C#의 Math.Truncate() 메서드는 Decimal 또는 Double 타입 숫자에서 소수점 이하를 모두 제거하고 정수부만 남기는 기능을 수행합니다. 반올림이나 올림이 아닌 단순히 소수점 뒤를 잘라내기(truncate) 때문에, 음수일 경우에도 0 방향으로 내림 처리된다는 점이 특징입니다.
문법(Syntax)
public static decimal Truncate(decimal val1) public static double Truncate(double val2)
위와 같이 두 가지 오버로드가 존재합니다. val1은 잘라낼 대상이 되는 decimal 형식의 숫자이며, val2는 double 형식의 숫자입니다. 매개변수로 전달된 값의 소수점 이하가 제거되고 정수 부분만 반환됩니다.
예제 1 – Decimal 값에 적용하기
먼저 Math.Truncate() 메서드를 decimal 값에 적용한 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = 25.46467m;
Decimal val2 = 45.9989m;
Decimal val3 = 678.325m;
Console.WriteLine(Math.Truncate(val1));
Console.WriteLine(Math.Truncate(val2));
Console.WriteLine(Math.Truncate(val3));
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
25 45 678
소수점 이하 자릿수와 상관없이, 소수점 앞의 정수 부분만 그대로 유지되는 것을 확인할 수 있습니다. 특히 45.9989처럼 소수 첫째 자리가 9에 가까운 값이라도 반올림되지 않고 45로 잘려나간다는 점에 주목하세요.
예제 2 – Double 값에 적용하기
이번에는 double 형식의 값에 Math.Truncate() 메서드를 적용해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Double val1 = 95.86467;
Double val2 = 25.11;
Double val3 = 878.325;
Console.WriteLine(Math.Truncate(val1));
Console.WriteLine(Math.Truncate(val2));
Console.WriteLine(Math.Truncate(val3));
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
95 25 878
정리
Math.Truncate()는 소수점 이하를 버리고 정수부만 필요할 때 유용하게 사용할 수 있는 메서드입니다. Math.Floor()(음수에서 더 작은 정수로 내림)나 Math.Round()(반올림)와 동작 방식이 다르므로, 상황에 맞는 메서드를 선택하는 것이 중요합니다.