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

C# Decimal.ToByte() 메서드 완벽 정리: 사용법, 예제, 주의사항

C#의 Decimal.ToByte() 메서드는 지정된 Decimal(10진수) 값을 그에 해당하는 8비트 부호 없는 정수(byte)로 변환하는 데 사용됩니다. 변환 시 소수점 이하 값은 반올림되지 않고 버려지며(절사), 결과값은 반드시 byte 범위인 0~255 사이에 있어야 합니다.

구문

Decimal.ToByte() 메서드의 기본 구문은 다음과 같습니다.

public static byte ToByte (decimal val);

여기서 매개변수 val은 byte 타입으로 변환할 decimal 숫자를 의미합니다.

주요 특징

  • 소수점 이하 값은 버려지고 정수 부분만 반환됩니다(반올림 아님).
  • 변환 결과가 0~255 범위를 벗어나면 OverflowException이 발생합니다.
  • -1보다 큰 음수(예: -0.22)는 절사 후 0이 되므로 정상적으로 변환됩니다.

예제 1: 양수 Decimal 값 변환

다음은 Decimal.ToByte() 메서드를 사용하여 양수 decimal 값을 byte로 변환하는 예제입니다.

using System;
public class Demo {
   public static void Main(){
      Decimal val1 = 6.59m;
      Decimal val2 = 30.12m;
      Decimal val3 = 69.34m;
      Console.WriteLine("Decimal 1 = "+val1);
      Console.WriteLine("Decimal 2 = "+val2);
      Console.WriteLine("Decimal 3 = "+val3);
      byte res1 = Decimal.ToByte(val1);
      byte res2 = Decimal.ToByte(val2);
      byte res3 = Decimal.ToByte(val3);
      Console.WriteLine("Byte value1 (Decimal to Byte) = "+res1);
      Console.WriteLine("Byte value2 (Decimal to Byte) = "+res2);
      Console.WriteLine("Byte value3 (Decimal to Byte) = "+res3);
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Decimal 1 = 6.59
Decimal 2 = 30.12
Decimal 3 = 69.34
Byte value1 (Decimal to Byte) = 6
Byte value2 (Decimal to Byte) = 30
Byte value3 (Decimal to Byte) = 69

출력에서 확인할 수 있듯이, 6.59는 6으로, 30.12는 30으로 변환되었습니다. 즉, 소수점 이하 자릿수는 모두 버려지고 정수 부분만 byte 값으로 반환됩니다.

예제 2: 음수 Decimal 값 변환

이번에는 음수 소수 값을 변환하는 경우를 살펴보겠습니다.

using System;
public class Demo {
   public static void Main(){
      Decimal val1 = -0.22m;
      Decimal val2 = -0.01m;
      Console.WriteLine("Decimal 1 = "+val1);
      Console.WriteLine("Decimal 2 = "+val2);
      byte res1 = Decimal.ToByte(val1);
      byte res2 = Decimal.ToByte(val2);
      Console.WriteLine("Byte value1 (Decimal to Byte) = "+res1);
      Console.WriteLine("Byte value2 (Decimal to Byte) = "+res2);
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Decimal 1 = -0.22
Decimal 2 = -0.01
Byte value1 (Decimal to Byte) = 0
Byte value2 (Decimal to Byte) = 0

-0.22와 -0.01처럼 -1보다 큰 음수는 소수점 이하를 버리면 0이 되기 때문에, byte 표현 범위 내에 속하여 예외 없이 0으로 변환됩니다. 반면 -1 이하의 값이나 255를 초과하는 값을 변환하려고 하면 OverflowException이 발생하므로 주의가 필요합니다.

OverflowException 안전하게 처리하기

byte 범위를 벗어나는 값이 입력될 가능성이 있다면 try-catch 블록을 사용해 예외를 처리하는 것이 좋습니다.

using System;
public class Demo {
   public static void Main(){
      Decimal val = 300.75m; // byte 최대값 255 초과
      try {
         byte res = Decimal.ToByte(val);
         Console.WriteLine("변환 결과 = " + res);
      } catch (OverflowException e) {
         Console.WriteLine("변환 실패: 값이 byte 범위(0~255)를 벗어납니다.");
      }
   }
}

이처럼 Decimal.ToByte() 메서드는 간단하지만 변환 범위에 대한 예외 처리를 함께 고려하면 더욱 안전한 코드를 작성할 수 있습니다.