为什么Excel(xlsx)会在xml中使用其他值保存一些值?

时间:2012-10-12 15:37:34

标签: xml excel decimal

  

可能重复:
  Floating point inaccuracy examples

我正在解析xlsx文件,并遇到了这种行为。我不知道如何在不描述重现问题的步骤的情况下解释它。

 1.  Create new blank Excel file (xlsx)
 2.  Type '8.8' into cell A1
 3.  Save file
 4.  Close Excel, rename file with .zip extension and open
 5.  Find sheet1.xml and open
 6.  Value for 8.8 in A1 will be saved as '8.8000000000000007'

这给我带来了麻烦,因为当我解析Excel文件时,我希望输入的值为'8.8'而不是'8.8000000000000007'。

有谁知道为什么Excel会这样做?

编辑:Excel如何知道我何时打开该文件只显示“8.8”而不是“8.8000000000000007”? Excel是否在特定小数位上舍入?

1 个答案:

答案 0 :(得分:3)

具有有限十进制表示的浮点数不一定具有有限二进制表示。转换是有损的。

因为8.8是分母(5)不是2的幂的分数,所以它的二进制浮点表示是无穷大的。应用程序用于存储它的基础数据类型(在本例中为Excel)具有有限的精度,因此表示被截断。