C#의 Decimal.Truncate() 메서드는 지정된 Decimal 값에서 정수 부분만 추출하여 반환하는 메서드입니다. 이때 소수점 이하 자릿수는 반올림되지 않고 모두 잘려나간다는 점에 유의해야 합니다.
구문
Decimal.Truncate() 메서드의 기본 구문은 다음과 같습니다.
public static decimal Truncate (decimal val);
여기서 val은 정수 부분만 남기고 잘라낼 대상이 되는 decimal 숫자입니다.
주요 특징
- 소수점 이하 값을 단순히 절삭하며, 반올림(Round)과는 동작 방식이 다릅니다.
- 음수의 경우에도 0 방향으로 절삭됩니다. 예를 들어 -6576.876은 -6576이 됩니다.
- 반환 타입은 decimal이며, 원본 값은 변경되지 않습니다.
예제 1
다음은 Decimal.Truncate() 메서드를 실제로 구현한 첫 번째 예제입니다.
using System;
public class Demo {
public static void Main(){
Decimal val = 6576.876m;
Console.WriteLine("Decimal 값 = "+val);
ulong res = Decimal.ToUInt64(val);
Console.WriteLine("64비트 부호 없는 정수 = "+res);
Decimal val2 = Decimal.Truncate(val);
Console.WriteLine("decimal의 정수 부분 = "+val2);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Decimal 값 = 6576.876 64비트 부호 없는 정수 = 6576 decimal의 정수 부분 = 6576
예제 2
이번에는 또 다른 예제를 통해 Decimal.Truncate() 메서드의 동작을 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
Decimal val = 28676.935m;
Console.WriteLine("Decimal 값 = "+val);
Decimal val2 = Decimal.Truncate(val);
Console.WriteLine("decimal의 정수 부분 = "+val2);
}
}출력 결과
실행 결과는 다음과 같습니다.
Decimal 값 = 28676.935 decimal의 정수 부분 = 28676
마무리
Decimal.Truncate()는 소수점 이하를 버리고 정수 부분만 필요로 할 때 유용하게 활용할 수 있는 메서드입니다. 만약 반올림 처리가 필요하다면 Decimal.Round()를, 올림이나 내림이 필요하다면 Math.Ceiling() 또는 Math.Floor()를 사용하는 것이 더 적합합니다. 상황에 맞는 메서드를 선택하면 보다 안정적이고 의도에 맞는 숫자 처리가 가능합니다.