C#에서 지정된 Decimal 값을 해당하는 8비트 부호 없는 정수(byte)로 변환하려면 Decimal.ToByte() 메서드를 사용합니다. 이 메서드는 소수점 이하를 버리고(0 방향으로 반올림) 정수 부분만 byte 값으로 반환합니다. 아래 예제 코드를 통해 살펴보겠습니다.
예제 1
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으로, 69.34는 69로 변환되었습니다. 즉, 소수점 이하 자릿수는 잘려나가고 정수 부분만 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은 모두 0에 가까운 음수이므로 0 방향으로 반올림되어 0으로 변환됩니다. 참고로, 변환하려는 Decimal 값이 0보다 작거나 255보다 크면 OverflowException이 발생하므로 실제 개발 시 범위 검사에 유의해야 합니다.