Tablora

Tablora · Библиотека

Отличить исходную точность от построчного округления

0.335 плюс 0.335 — это 0.670, а если сначала округлить каждую строку, выйдет 0.68. Посмотрите, как проверка показывает такой разрыв и как проверить оба варианта.

Два честных ответа на одну сумму

В счетах, налоговых сводках и расчётах зарплаты часто встречаются суммы с бо́льшим числом знаков после точки, чем допускает валюта. Одна система складывает точные значения и округляет итог; другая сначала округляет каждую строку, а потом складывает. Оба способа законны, и на одних и тех же данных они могут расходиться на цент и больше. Какой из них применяется, определяет правило выставления счетов, налогообложения или учёта, стоящее за документом, а не арифметика.

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

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

Разбор примера с 0.335

В примере на странице введены 0.335 и 0.335, а ожидаемая сумма — 0.68. «Вычисленная сумма» равна 0.670, «Ожидаемая сумма» показана с той же точностью как 0.680, а «Разница» — -0.010. «Суммы совпадают» показывает «Нет».

Теперь введите строки в том виде, какой они примут после округления каждой до двух знаков: 0.34 и 0.34. При той же ожидаемой сумме 0.68 «Вычисленная сумма» равна 0.68, а «Разница» — 0.00. Указанное число получено округлением каждой строки перед сложением, а не округлением суммы.

Как выяснить, какой этап использовался

Ловушки точности

Входные данные

По одному значению в строке
0.335 0.335
Ожидаемая сумма
0.68

Результаты

Вычисленная сумма
0.670
Разница
-0.010
Суммы совпадают
Нет