手动解析double时避免舍入错误

时间:2015-07-10 06:44:44

标签: parsing double rounding-error

我想为double值实现一个简单的解析器(只是为了好玩)。但是,我注意到在处理小数移位时,在将值乘以10的幂时会出现舍入误差。

我想知道double.Parse如何确保结果值尽可能接近字符串值?

只是一个例子: 解析0.0124(= 124 * 0.0001)时,得到0.012400000000000001。但是,double.Parse按预期显示0.0124。

1 个答案:

答案 0 :(得分:0)

解决方案似乎很简单: 只是不要乘以小于1的值(例如上例中的0.0001),但除以1 / x(上例中为10000)。

我认为原因很简单,整数值具有精确的表示(最多2 ^ 53),因此商中没有舍入误差(因为在因子< 1中)。