Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Chuyển đổi Decimal sang số nguyên 8-bit không dấu trong C#

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ệ: OverflowException nếu ngoài phạm vi
  • Để chuyển an toàn: dùng checked/unchecked hoặ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