2011-05-02 3 views
1

Я пытаюсь прочитать файл Excel 2007 (xlsx) из-за пределов Excel, и я нахожу несоответствие, которое я не могу объяснить.Непоследовательная визуализация числовых значений в Excel 2007 по сравнению с основным XML-файлом

Если вы введете значение 19.99 в ячейку, а затем посмотрите на лежащий в основе документ Xml, он фактически хранится как 19.989999999999998. Это не единственное значение, которое делает это, но это разумный пример. На листе не применяется форматирование. В моем примере я просто открываю новую Рабочую книгу, введите 19.99 в A1 и сохраните файл.

Я попытался открыть этот простой пример как в открытом офисе, так и в документах Google, и он показывает 19.99, когда документ загружен.

Мой вопрос в том, как определить, когда преобразовать это значение с 19.989999999999998 в 19.99 для использования в других системах?

+0

Вам нужно преобразовать это значение? Я имею в виду, что разница между ними очень мала. Это повлияет на вашу систему? – Konstant

+0

Мне нужно иметь версию файла, которая визуально соответствует содержимому файла xlsx. Точный внешний вид имеет значение в этом случае. В то время как числовая «разница» довольно мала и будет округлена правильно, это неприемлемо для моих целей. –

ответ

2

Разница между введенным 19,99 и сохраненным 19.989999999999998 является вариацией с плавающей запятой ... обычно всегда будет небольшое несоответствие между двоичным представлением поплавка (используется внутренне с помощью Excel) и десятичным значением, используемым для отображения (и хранения в файле xlsx).

Даже если вы не присвоили явным образом формат ячеек, Excel применяет форматирование по умолчанию «@» или «Общее», которое обычно (для цифр) отображается на 2dp, при необходимости применяя научные исследования. Если вы посмотрите на форматирование чисел для этой ячейки (независимо от того, используете ли вы интерфейс Excel Excel или просматриваете файл xlsx), вы должны убедиться, что на самом деле оно установлено по умолчанию.