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

时间:2010-05-12 00:41:11

标签: excel ms-office excel-2007

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

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

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

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

3 个答案:

答案 0 :(得分:3)

This page包含内部Excel数据类型的参考。

答案 1 :(得分:3)

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

基本上,数字作为纯文本存储在元素中,因此如果单元格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>

使用OpenXML时,我强烈建议您只使用SDK,而不是自己动手。

答案 2 :(得分:-1)

它将数字存储为双倍。