C#의 Decimal.ToInt16() 메서드는 지정된 Decimal 값을 그에 해당하는 16비트 부호 있는 정수(short)로 변환하는 데 사용됩니다. 변환 시 소수점 이하 자릿수는 버려지고 정수 부분만 결과로 반환됩니다.
구문
메서드의 기본 구문은 다음과 같습니다.
public static short ToInt16 (decimal val);
여기서 매개변수 val은 16비트 부호 있는 정수로 변환할 decimal 숫자를 의미합니다.
주요 특징
- 변환 시 소수점 이하 값은 반올림되지 않고 버려집니다(0을 향한 절삭).
- 입력값이 Int16 표현 범위인 -32,768 ~ 32,767을 벗어나면 OverflowException이 발생합니다.
- 정적(static) 메서드이므로 인스턴스 생성 없이 Decimal 클래스에서 바로 호출할 수 있습니다.
예제 1
다음은 Decimal.ToInt16() 메서드의 기본적인 사용법을 보여주는 예제입니다.
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);
short res1 = Decimal.ToInt16(val1);
short res2 = Decimal.ToInt16(val2);
Console.WriteLine("16비트 부호 있는 정수 (value1) = "+res1);
Console.WriteLine("16비트 부호 있는 정수 (value2) = "+res2);
}
}
출력
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Decimal 1 = -3.578 Decimal 2 = 9.352 16비트 부호 있는 정수 (value1) = -3 16비트 부호 있는 정수 (value2) = 9
-3.578은 소수 부분이 잘려 -3으로, 9.352는 9로 변환된 것을 확인할 수 있습니다.
예제 2
이번에는 1보다 작은 값과 소수부가 없는 값을 변환하는 또 다른 예제를 살펴보겠습니다.
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);
short res1 = Decimal.ToInt16(val1);
short res2 = Decimal.ToInt16(val2);
Console.WriteLine("16비트 부호 있는 정수 (value1) = "+res1);
Console.WriteLine("16비트 부호 있는 정수 (value2) = "+res2);
}
}
출력
실행 결과는 다음과 같습니다.
Decimal 1 = 0.001 Decimal 2 = 1.000 16비트 부호 있는 정수 (value1) = 0 16비트 부호 있는 정수 (value2) = 1
0.001처럼 1보다 작은 값은 0으로, 1.000은 1로 변환됩니다.
마무리
Decimal.ToInt16() 메서드는 Decimal 값을 short 타입으로 간편하게 변환할 수 있게 해주지만, 값이 Int16 범위를 벗어나면 예외가 발생하므로 실무에서는 try-catch 블록으로 감싸 안전하게 처리하는 것이 좋습니다.