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

Chuyển đổi Decimal sang Int64 (long) trong C#

Phương thức Convert.ToInt64() chuyển đổi giá trị decimal sang số nguyên 64-bit có dấu (long). Giá trị decimal được làm tròn đến số nguyên gần nhất (banker's rounding: làm tròn đến số chẵn khi ở giữa).

Ví dụ cơ bản

decimal d = 310.23m;
long res = Convert.ToInt64(d);  // 310

Mã nguồn hoàn chỉnh

using System;

class Demo
{
    static void Main()
    {
        decimal d = 190.66m;
        long res = Convert.ToInt64(d);
        Console.WriteLine("Converted Decimal '{0}' to Int64 value {1}", d, res);
    }
}

Kết quả

Converted Decimal '190.66' to Int64 value 191

Quy tắc làm tròn (Banker's Rounding)

Các phương thức chuyển đổi khác

// Ép kiểu tường minh (truncate - cắt bỏ phần thập phân)
long truncated = (long)190.66m;  // 190

// Làm tròn theo các chế độ khác
long rounded = (long)Math.Round(190.66m, MidpointRounding.AwayFromZero);  // 191
long floor = (long)Math.Floor(190.66m);  // 190
long ceiling = (long)Math.Ceiling(190.66m);  // 191

Lưu ý

  • Ném OverflowException nếu giá trị decimal vượt quá phạm vi long (±9,223,372,036,854,775,807).
  • decimal có phạm vi lớn hơn long (28-29 chữ số vs 19 chữ số).
DecimalKết quả Int64Giải thích
190.66m191.66 > .5 → lên
190.50m190.50 → làm tròn đến số chẵn (190)
191.50m192.50 → làm tròn đến số chẵn (192)
-190.50m-190Số âm cũng làm tròn đến chẵn