Проблема с большими десятичными знаками в Excel - PullRequest
1 голос
/ 04 августа 2020

В настоящее время я пытаюсь загрузить многостраничный документ Excel в веб-приложение, но сталкиваюсь с проблемой, когда к сумме добавляются числа с плавающей запятой (см. Прикрепленные изображения). Сумма процентных значений должна составлять 100, однако это не так. Сумма с 12 знаками после запятой составляет 100,000000000000:

(12 знаков после запятой)

но когда десятичный разряд увеличивается до 13, получается 99.9999999999999:

(13 знаков после запятой)

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

Я использую Excel 2016. И данные следующие. (92) строки значения 1.075268. (1) строка значения 1.075344.

Любые советы или рекомендации были бы очень признательны. Пожалуйста, дайте мне знать, если мне нужно что-то уточнить.

1 Ответ

0 голосов
/ 06 августа 2020

По-видимому, это не имеет ничего общего с вводимыми вами значениями или форматированием содержащих их ячеек относительно десятичных разрядов, а с тем, как Excel хранит их внутри и отображает их:

enter image description here

[Don't get confused by the decimal commas usual here.]

If you look at .xslx/xl/worksheets/sheet1.xml with a ZIP-program:

  ...
  <c r="A1" s="1">
    <v>1.0753440000000001</v> ... displayed as 1,075344‾0
  </c>
  <c r="A2" s="1">
    <v>1.0752679999999999</v> ... displayed as 1.075268‾0
  </c>
  ...
  <c r="C2" s="11">
    <f>SUM(A:A)</f>
    <v>99.999999999999844</v> ... displayed as 100.‾0
  </c>
  ...
  <c r="E1" s="9">
    <v>1</v>
  </c>
  <c r="E2" s="9">
    <v>1.1000000000000001</v> ... displayed as 1.1‾0
  </c>
  ...
  <c r="F11" s="14">
    <f>SUM(E:E)</f>
    <v>99.999999999999872</v> ... displayed as 99.999999999999‾0
  </c>
  ...
  <c r="K1" s="9">
    <v>91.2</v>
  </c>
  <c r="K2" s="9">
    <v>1.1000000000000001</v> ... ... displayed as 1.1‾0
  </c>
  ...

Однако, как Мартин упомянула в комментарии к вашему вопросу, вы все равно отправляете в приложение не сумму, а отдельные значения.

...