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

Jon*_*Jon 5 excel excel-2007 ms-office

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

但是,我还没有找到一个明确说明excel使用64位浮点数在内部代表excel中除了文本之外的每个单元格"类型"的单一来源.我不知道某些类型是使用有符号还是无符号整数,有些使用64位浮点.

我已经找到了数以万亿计的文章,其中1)描述浮点数,然后2)谈论由于浮点数而要小心excel.我没有找到一个声明说"所有类型都是除文本之外的64位浮点数".我没有找到一个单独的声明,说"更改单元格的类型只会更改其可视化表示而不是其内部表示,除非您将类型从文本更改为其他不是文本的类型,或者您更改其他类型的是不是文字到文字".

这实际上就是我想要知道的,而且它是如此简单和公理,我很惊讶我能找到数以万计的文章和页面来讨论这些陈述,但不直接说明.

Rod*_*ley 3

Excel 2007 支持 OpenXML 格式,该格式是包含一堆 XML 文件的 ZIP 文件 (.XLSX)。有一个可使用 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>
Run Code Online (Sandbox Code Playgroud)

使用 OpenXML 时,我强烈建议您仅使用 SDK,而不是自行使用它。