目前,我正在处理复杂计算中的高精度数字。一些结果和源数据应该以序列化的形式存储。一切都很好,直到我得到神奇的双倍值:0.00000060912702792848。
将该值写入字符串(XmlWriter 所做的):
s = d.ToString("R", NumberFormatInfo.InvariantInfo);
给出预期结果6.0912702792848E-07。
但是,当我尝试取回双倍值时,魔法就开始了(XmlReader 的工作方式):
d=double.Parse(s, NumberStyles.Float, NumberFormatInfo.InvariantInfo);
转换后的值为 0.00000060912702792848005,末尾有005 个额外数字。
它看起来像是给出这种结果的特殊数字组合。我想念什么?
环境:Windows 7 Professional,64 位。