C#의 Decimal.ToInt32() 메서드는 지정된 Decimal 값을 그에 상응하는 32비트 부호 있는 정수(int)로 변환할 때 사용됩니다. 소수점 이하 자릿수는 버려지며(0 방향으로 잘림), 결과는 int 타입으로 반환됩니다.
문법(Syntax)
메서드의 기본 문법은 다음과 같습니다.
public static int ToInt32 (decimal val);
여기서 val은 32비트 부호 있는 정수로 변환하고자 하는 decimal 숫자입니다.
주요 특징
- 소수점 이하 값은 반올림이 아닌 잘림(truncation) 처리되어 0을 향해 반올림됩니다. 예를 들어
-3.578은-3,9.352는9가 됩니다. - 변환 대상 값이
Int32범위(-2,147,483,648 ~ 2,147,483,647)를 벗어나면OverflowException이 발생합니다. - 명시적 캐스팅인
(int)decimalValue와 동일한 결과를 반환합니다.
예제 1
다음은 Decimal.ToInt32() 메서드를 구현한 첫 번째 예제입니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = 0.001m;
Decimal val2 = 1.000m;
Console.WriteLine("Decimal 값 1 = "+val1);
Console.WriteLine("Decimal 값 2 = "+val2);
int res1 = Decimal.ToInt32(val1);
int res2 = Decimal.ToInt32(val2);
Console.WriteLine("32비트 부호 있는 정수 (값1) = "+res1);
Console.WriteLine("32비트 부호 있는 정수 (값2) = "+res2);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Decimal 값 1 = 0.001 Decimal 값 2 = 1.000 32비트 부호 있는 정수 (값1) = 0 32비트 부호 있는 정수 (값2) = 1
0.001은 소수 부분이 잘려 0이 되고, 1.000은 1로 변환된 것을 확인할 수 있습니다.
예제 2
이번에는 음수를 포함한 값으로 Decimal.ToInt32() 메서드를 테스트해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = -3.578m;
Decimal val2 = 9.352m;
Console.WriteLine("Decimal 값 1 = "+val1);
Console.WriteLine("Decimal 값 2 = "+val2);
int res1 = Decimal.ToInt32(val1);
int res2 = Decimal.ToInt32(val2);
Console.WriteLine("32비트 부호 있는 정수 (값1) = "+res1);
Console.WriteLine("32비트 부호 있는 정수 (값2) = "+res2);
}
}출력 결과
실행 결과는 다음과 같습니다.
Decimal 값 1 = -3.578 Decimal 값 2 = 9.352 32비트 부호 있는 정수 (값1) = -3 32비트 부호 있는 정수 (값2) = 9
음수인 경우에도 마찬가지로 소수점 이하가 버려지고 0 방향으로 변환되므로, -3.578은 -4가 아닌 -3이 됩니다. 이처럼 Decimal.ToInt32()는 단순하지만 잘림 동작과 범위 제한을 정확히 이해하고 사용하는 것이 중요합니다.