有人能确认Microsoft Excel 2007在内部是如何表示数字的吗?

有人能确认Microsoft Excel 2007在内部是如何表示数字的吗?,excel,ms-office,excel-2007,Excel,Ms Office,Excel 2007,我对IEEE754浮点标准了如指掌,因为我必须在考试中学习它。我确切地知道浮点数是如何使用的,以及它们可能存在的问题。我可以手动对浮点数的二进制表示进行任何操作 然而,我还没有找到一个明确声明excel使用64位浮点数在内部表示excel中除文本以外的每个单元格“类型”的源代码。我不知道有些类型使用有符号或无符号整数,有些使用64位浮点 我已经找到了数万亿篇文章,其中1)描述浮点数,然后2)谈论由于浮点数而小心使用excel。我没有发现一条语句说“除文本外,所有类型都是64位浮点数”。我没有发现

我对IEEE754浮点标准了如指掌,因为我必须在考试中学习它。我确切地知道浮点数是如何使用的,以及它们可能存在的问题。我可以手动对浮点数的二进制表示进行任何操作

然而,我还没有找到一个明确声明excel使用64位浮点数在内部表示excel中除文本以外的每个单元格“类型”的源代码。我不知道有些类型使用有符号或无符号整数,有些使用64位浮点

我已经找到了数万亿篇文章,其中1)描述浮点数,然后2)谈论由于浮点数而小心使用excel。我没有发现一条语句说“除文本外,所有类型都是64位浮点数”。我没有发现一条语句说“更改单元格类型只会更改其视觉表示,而不会更改其内部表示,除非将类型从文本更改为非文本的其他类型,或者将非文本的其他类型更改为文本”


这就是我想知道的一切,它是如此简单和不言自明,以至于我惊讶于我能找到数以万亿计的文章和页面,这些文章和页面围绕这些语句进行讨论,但不直接说明它们。

有一个内部Excel数据类型的参考。

Excel 2007支持OpenXML格式,这是一个ZIP文件(.XLSX)包含一组XML文件。有一个使用OpenXML格式的SDK,您可以获取并下载它的文档

基本上,数字以纯文本形式存储在元素中,因此如果在UI中单元格A1的数字为42,单元格A2的数字为81.56,则XML将类似于以下XML片段:

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

42
81.569999999999993

在使用OpenXML时,我强烈建议您只使用SDK,而不要单独使用它。

它将数字存储为双精度。

我认为Excel与大多数Microsoft产品一样,将数字存储为1和0的序列,对于旧版本,偶尔会使用两个。根据您的原始问题,您的问题已经正确回答了两次,但有点模糊,这就是为什么您有两个正确答案,一个是旧XLS格式(2003年)的答案,另一个是新XLSX格式(2007年)的答案。你只是把你的问题改写成与你所问的和所回答的完全不同的问题。您特别询问了Excel2007文件格式以及它如何存储浮点数。2007年的默认格式是XLSX,所以这就是我的答案,其他选项可能是XLS,codeka的答案是什么。您现在似乎在问Excel 2007如何表示内存中的单元格值,而之前似乎很清楚您在问它们在文件格式中是如何表示的。文件格式有很好的文档记录,但是你没有找到你想要的东西的原因是因为微软没有记录这些东西是有原因的。因此,虽然微软的核心Excel团队开发人员可以简单地找到答案,但在该团队之外可能很难找到答案。你应该找到一个Excel团队成员的博客,试着给他发一封电子邮件或一篇文章,告诉他你的问题。@ScreefGnome-我根本没有编辑我的问题,它和我发布它时的一样。你的回答很有用,但我真正想知道的是它如何将值存储在内存中,以及在对它们进行数学运算时是否将它们转换为其他类型,因为某些算法在使用浮点数时是不稳定的。