有人可以确认如何Microsoft Excel 2007内部表示数字?

我非常了解IEEE 754浮点标准,因为我必须为考试学习它。 我确切知道如何使用浮点数和他们可以有的问题。 我可以手动对浮点数的二进制表示做任何操作。

然而,我还没有find一个单一的来源明确指出,Excel中使用64位浮点数内部表示Excel中的每个单元格“types”,除了文本。 我不知道是否有些types使用带符号或无符号整数,有些使用64位浮点。

我已经find了数以万计的文章,其中1)描述浮点数,然后2)由于浮点数而谈论对excel的谨慎。 我还没有发现一个说法“所有types都是除文本外的64位浮点数”。 我还没有find一个单一的声明,说:“改变一个单元格的types只会改变它的视觉表示,而不是它的内部表示,除非你从文本types改变其他types不是文本或你改变其他types是而不是文本到文本“。

这实际上是我想知道的,而且这是如此简单和公理,我很惊讶,我可以find数以万计的文章和页面谈论这些陈述,但没有直接陈述他们。

Excel 2007支持OpenXML格式,该格式是包含一堆XML文件的ZIP文件(.XLSX)。 有一个SDK可以使用OpenXML格式,你可以在这里获得文档,并在这里下载。

基本上,数字以纯文本forms存储在元素中,因此如果单元格A1的数字为42,单元格A2的数字为81.56,则XML将如下面的XML片段所示:

<row r="1" spans="1:2"> <cr="A1"> <v>42</v> </c> <cr="B1"> <v>81.569999999999993</v> </c> </row> 

在使用OpenXML的时候,我强烈推荐使用SDK,而不是自己去做。

此页面有内部Excel数据types的参考。

它将数字存储为两倍。