Кто-то может подтвердить, как Microsoft Excel 2007 внутренне представляет числа?

Я знаю стандарт плавающей точки IEEE 754 наизусть, поскольку я должен был изучить это для экзамена. Я знаю точно, как числа с плавающей точкой используются и проблемы, которые они могут иметь. Я могу вручную сделать любую операцию на двоичном представлении чисел с плавающей точкой.

Однако я не нашел единственный источник, который однозначно указывает, что Excel использует числа с плавающей точкой на 64 бита для внутреннего представления каждой ячейки "тип" в Excel за исключением текста. Я понятия не имею, используют ли некоторые типы целые числа со знаком или целые числа без знака и некоторую плавающую точку использования 64 битов.

Я нашел буквально триллионы статей, которые 1) описывают числа с плавающей точкой и затем 2) разговор о том, чтобы быть осторожным с Excel из-за чисел с плавающей точкой. Я не нашел отдельного оператора, говоря, что "все типы являются числами с плавающей точкой на 64 бита кроме текста". Я не нашел отдельного оператора, в котором говорится, что "изменение типа ячейки только изменяет свое визуальное представление и не свое внутреннее представление, если Вы не изменяете тип от текста до некоторого другого типа, который не является текстом, или Вы изменяете некоторый другой тип, который не является текстом для отправки текстовых сообщений".

Это - буквально все, что я хочу знать, и это так просто и аксиоматически, что я поражен, что могу найти триллионы статей и страниц, которые говорят об этих операторах, но не указывают им непосредственно.

5
задан Jon 12 May 2010 в 00:41
поделиться

3 ответа

Excel 2007 поддерживает формат OpenXML, который представляет собой ZIP-файл (.XLSX), содержащий набор файлов XML. Существует SDK для работы с форматом OpenXML, вы можете получить для него документацию здесь и загрузить здесь .

В основном числа хранятся в виде простого текста внутри элемента, поэтому, если ячейка A1 имеет номер 42, а ячейка A2 имеет номер 81,56 в пользовательском интерфейсе, XML будет выглядеть следующим образом:

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

При работе с OpenXML I настоятельно рекомендую просто использовать SDK, а не использовать его самостоятельно.

3
ответ дан 15 December 2019 в 00:53
поделиться

Он сохранил числа как двойные.

-2
ответ дан 15 December 2019 в 00:53
поделиться

На этой странице есть справочник по внутренним типам данных Excel.

3
ответ дан 15 December 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: