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

Kiểu dữ liệu tốt nhất cho tiền tệ (currency) trong C#

Kiểu dữ liệu tốt nhất cho tiền tệ trong C# là decimal. Kiểu decimal là kiểu dữ liệu 128-bit phù hợp cho tính toán tài chính và tiền tệ. Kiểu decimal biểu diễn giá trị từ 1.0 * 10^-28 đến khoảng 7.9 * 10^28 với 28-29 chữ số có nghĩa. Để khởi tạo biến decimal, dùng hậu tố m hoặc M.

decimal b = 2.1m;

Ví dụ dưới đây cho thấy giá trị min và max của decimal.

Ví dụ

using System;

namespace DemoApplication
{
    public class Program
    {
        public static void Main()
        {
            Console.WriteLine($"Decimal Min Value: {decimal.MinValue}");
            Console.WriteLine($"Decimal Max Value: {decimal.MaxValue}");
            Console.ReadLine();
        }
    }
}

Kết quả

Decimal Min Value: -79228162514264337593543950335
Decimal Max Value: 79228162514264337593543950335

Tập hữu hạn giá trị của kiểu decimal có dạng (-1)^s * c * 10^-e, với sign s là 0 hoặc 1, coefficient c là 0 <= c < 2^96, và scale e sao cho 0 <= e <= 28. Kiểu decimal không hỗ trợ signed zeros, infinities, hoặc NaN. Một decimal được biểu diễn như integer 96-bit scaled by power of ten. Với decimal có giá trị tuyệt đối < 1.0m, giá trị chính xác đến vị trí thập phân thứ 28. Với decimal >= 1.0m, giá trị chính xác 28-29 chữ số.

Khác với float và double, decimal biểu diễn chính xác các số thập phân như 0.1. Trong float/double, các số này thường là phân số vô hạn, dễ gây lỗi làm tròn.

Decimal ưu tiên hơn float/double vì độ chính xác cao hơn và phạm vi nhỏ hơn cả hai.

Ví dụ: Chuyển đổi USD sang INR

using System;

namespace DemoApplication
{
    public class Program
    {
        public static void Main()
        {
            decimal usd = 2.5m;
            Console.WriteLine($"USD: {usd}");
            decimal inrOfOneUSD = 75.04m;
            Console.WriteLine($"Giá trị INR của 1 USD: {inrOfOneUSD}");
            decimal inr = usd * inrOfOneUSD;
            Console.WriteLine($"Giá trị INR: {inr}");
            Console.ReadLine();
        }
    }
}

Kết quả

USD: 2.5
Giá trị INR của 1 USD: 75.04
Giá trị INR: 187.600