Перейти к основному содержимому

Банковское округление

Банковское округление​

Описание​

При вычислении значений с помощью деления (например, НДС) получаются копейки, которые при последующем суммировании и округлении дают интересный эффект - сумма НДС по нескольким позициям может не равняться суммарному значению НДС, рассчитанному на основе общей суммы.

Для борьбы с этой проблемой применяется «банковское округление». Так же оно известно под следующими наименованиями: гауссово округление, бухгалтерское округление.

Этот способ очень похож на математическое округление, за исключением следующего момента: если за последней значащей цифрой стоит 5, то последнюю цифру увеличивают, если она нечётная, и не изменяют, если чётная.

Такой подход не снимает проблему округления полностью, а только значительно сокращает вероятность накопления ошибки за счет того, что количество «четных» и «нечетных» сумм статистически примерно одинаково. На практике такой точности вполне достаточно.

Этот алгоритм часто используется при расчетах в бухгалтерских системах - 1С, Комтет.

Алгоритм​
  • если тысячные доли рубля меньше 5, то тысячные просто отбрасываются;
  • если тысячные доли рубля равны 5, а количество сотых четное, то тысячные просто отбрасываются;
  • в остальных случаях округляем вверх до сотых.
Примеры округления​
точное числоарифметическоебанковское
100.004100100
100.005100.01100
100.006100.01100.01
100.014100.01100.01
100.015100.02100.02
100.016100.02100.02
100.024100.02100.02
100.025100.03100.02
100.026100.03100.03