Excel 2007中的数值与基础xml文件不一致的可视化

我正在尝试从Excel外部读取Excel 2007文件(xlsx),并发现我无法解释的不一致。

如果你input19.99的值到一个单元格中,然后看看底层的Xml文档,它实际上被存储为19.989999999999998。 这不是唯一的价值,但这是一个合理的例子。 没有格式应用在工作表中。 在我的例子中,我只是打开一个新的工作簿,在A1键入19.99,并保存该文件。

我试图在开放式办公室和Google文档中打开这个简单的例子,并且在文档加载时显示19.99。

我的问题是,如何确定何时将此值从19.989999999999998转换为19.99以供其他系统使用?

在你input的19.99和19.989999999999998之间的变化是浮点变化…浮点的二进制表示(由Excel内部使用)和用于显示的十进制(和存储在xlsx文件)。

即使没有明确指定单元格的格式,Excel也会应用“@”或“常规”的默认格式,通常(对于数字)显示为2dp,如果需要,则应用科学。 如果您查看该单元格的数字格式(无论是使用MS Excel前端还是通过检查xlsx文件),您应该会发现它实际上已设置为默认值。