ภาพรวม
เมธอด Decimal.ToByte(Decimal) แปลงค่า Decimal ให้เป็น byte (8-bit unsigned integer, ช่วง 0-255) โดยตัดทอนส่วนทศนิยม (truncate toward zero) หากค่าอยู่นอกช่วงจะโยน OverflowException
ตัวอย่างที่ 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
ตัวอย่างที่ 2: แปลงค่าลบ (โยน OverflowException)
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);
try
{
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);
}
catch (OverflowException ex)
{
Console.WriteLine("OverflowException: " + ex.Message);
}
}
}
ผลลัพธ์ (จริง - โยนข้อยกเว้น)
Decimal 1 = -0.22
Decimal 2 = -0.01
OverflowException: Value was either too large or too small for an unsigned byte.
หมายเหตุ: ต้นฉบับแสดงผลเป็น 0 ซึ่งไม่ถูกต้องจริงๆ โค้ดจริงจะโยน OverflowException สำหรับค่าลบ
คำอธิบายเพิ่มเติม
- การแปลงตัดทอนส่วนทศนิยม (truncation) ไม่ใช่การปัดเศษ (rounding)
- ช่วงค่าที่แปลงได้: 0 ถึง 255 (byte.MaxValue)
- เมธอดที่เกี่ยวข้อง:
ToSByte()(signed byte, -128 ถึง 127),ToInt16(),ToInt32(),ToInt64(),ToUInt16(),ToUInt32(),ToUInt64() - ใช้
Decimal.Truncate()ก่อนแปลง หากต้องการควบคุมพฤติกรรมการตัดทอน