我試圖對象與價值0.39999999999999997
轉換爲十進制變量不失精度。C#轉換對象爲十進制
object d = 0.39999999999999997;
我試過以下方法。
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
我知道這不是一個問題,小數數據類型無法存儲此值,如下圖所示。
decimal val5 = 0.39999999999999997m; // val5 = 0.39999999999999997;
如何將此對象轉換爲十進制而不會丟失精度?
我正在使用.NET Framework 3.5。
不是很確定你能保證裝箱/拆箱和不同的浮點類型之間的轉換持續性的精度。 – Tigran