Tôi đang cố chuyển đổi đối tượng có giá trị 0.39999999999999997
thành biến thập phân mà không làm mất độ chính xác.C# Chuyển đổi đối tượng thành số thập phân
object d = 0.39999999999999997;
Tôi đã thử các phương pháp sau.
decimal val1 = Convert.ToDecimal(d); // val1 = 0.4
object val2 = Convert.ChangeType(d, Type.GetType("System.Decimal")); // val2 = 0.4
decimal val3 = decimal.Parse(d.ToString()); // val3 = 0.4
decimal val4 = (Decimal) d; // val4 = 0.4
Tôi biết đây không phải là vấn đề với kiểu dữ liệu thập phân không thể lưu trữ giá trị này như được minh họa bên dưới.
decimal val5 = 0.39999999999999997m; // val5 = 0.39999999999999997;
Làm cách nào để chuyển đổi đối tượng này sang thập phân mà không làm mất độ chính xác?
Tôi đang sử dụng .NET Framework 3.5 nếu vấn đề đó quan trọng.
không phải là rất chắc chắn rằng bạn có thể đảm bảo độ chính xác persistant giữa boxing/unboxing và khác nhau chuyển đổi loại nổi. – Tigran