【发布时间】:2011-10-14 00:24:41
【问题描述】:
我正在尝试将具有值0.39999999999999997 的对象转换为十进制变量而不会丢失精度。
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。
【问题讨论】:
-
不太确定能否保证装箱/拆箱和不同浮动类型转换之间的持久精度。