为什么Excel(xlsx)使用附加值在xml中保存一些值?

可能重复:
浮点不准确的例子

我正在parsingxlsx文件,并遇到此行为。 我不知道如何解释它,而没有描述重现问题的步骤。

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' 

这对我来说是一个问题,因为当我parsingExcel文件时,我想要input的值是'8.8'而不是'8.8000000000000007'。

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

编辑:而Excel如何知道当我打开该文件只显示“8.8”而不是“8.8000000000000007”? Excel是否在一个特定的小数点位置?

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

因为8.8是分母(5)不是2的幂的分数,所以其二进制浮点表示是无限的。 应用程序用来存储它的底层数据types(在这种情况下为Excel)具有有限的精度,因此表示被截断。