Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Decimal.ToInt16() 메서드 완벽 정리: 문법과 실전 예제

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 블록으로 감싸 안전하게 처리하는 것이 좋습니다.