Giới thiệu
Phương thức Decimal.ToByte(Decimal) chuyển đổi giá trị Decimal sang byte (8-bit unsigned integer, phạm vi 0-255). Phần thập phân bị cắt bỏ (truncated), không làm tròn. Giá trị âm hoặc > 255 ném OverflowException.
Ví dụ 1: Chuyển đổi các giá trị Decimal dương
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);
}
}
Kết quả
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
Ví dụ 2: Chuyển đổi giá trị âm (ném ngoại lệ)
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 = " + res1);
Console.WriteLine("Byte value2 = " + res2);
}
catch (OverflowException ex)
{
Console.WriteLine("OverflowException: " + ex.Message);
}
}
}
Kết quả
Decimal 1 = -0.22 Decimal 2 = -0.01 OverflowException: Value was either too large or too small for an unsigned byte.
Lưu ý quan trọng
- Cắt bỏ phần thập phân: 6.99 → 6 (không làm tròn)
- Phạm vi hợp lệ: 0 đến 255
- Ngoại lệ:
OverflowExceptionnếu ngoài phạm vi - Để chuyển an toàn: dùng
checked/uncheckedhoặc try-catch
Các chuyển đổi Decimal khác
| Phương thức | Kiểu đích | Phạm vi |
|---|---|---|
| ToSByte | sbyte | -128 đến 127 |
| ToByte | byte | 0 đến 255 |
| ToInt16 | short | -32,768 đến 32,767 |
| ToUInt16 | ushort | 0 đến 65,535 |
| ToInt32 | int | -2B đến 2B |
| ToUInt32 | uint | 0 đến 4B |
| ToInt64 | long | -9E18 đến 9E18 |
| ToUInt64 | ulong | 0 đến 1.8E19 |