Непоследовательная визуализация числовых значений в Excel 2007 по сравнению с базовым XML-файлом - PullRequest
1 голос
/ 02 мая 2011

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

Если вы введете значение 19,99 в ячейку, а затем посмотрите на базовый XML-документ, оно фактически сохраняется как 19,989999999999998. Это не единственная ценность, которая делает это, но это разумный пример. На листе форматирование не применяется. В моем примере я просто открываю новую книгу, набираю 19.99 в A1 и сохраняю файл.

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

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

1 Ответ

2 голосов
/ 03 мая 2011

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

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

...