2011-05-02 39 views
1

我试图从Excel以外读取Excel 2007文件(xlsx),并发现我无法解释的不一致。Excel 2007中的数值与基础xml文件不一致的可视化

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

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

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

+0

你需要改变这个值吗?我的意思是两者之间的差异非常小。这会影响你的系统吗? – Konstant 2011-05-02 17:05:07

+0

我需要具有与xlsx文件的内容可视匹配的文件版本。确切的外观在这种情况下很重要。尽管数字“差异”非常小,并且圆整,但对我的目的来说却是不可接受的。 – 2011-05-02 17:27:18

回答

2

您输入的19.99和19.989999999999998之间的变化是浮点变化......浮点的二进制表示(由Excel内部使用)和用于显示的小数之间通常会存在细微的差异(并存储在xlsx文件中)。

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