| Строка 1: | Строка 1: | ||
==Бухгалтерское округление== | ==Бухгалтерское округление== | ||
| − | Описание | + | ===== Описание ===== |
| − | |||
При вычислении значений с помощью деления (например, НДС) получаются копейки, которые при последующем суммировании и округлении дают интересный эффект - сумма НДС по нескольким позициям может не равняться суммарному значению НДС, рассчитанному на основе общей суммы. | При вычислении значений с помощью деления (например, НДС) получаются копейки, которые при последующем суммировании и округлении дают интересный эффект - сумма НДС по нескольким позициям может не равняться суммарному значению НДС, рассчитанному на основе общей суммы. | ||
| Строка 13: | Строка 12: | ||
Этот алгоритм часто используется при расчетах в бухгалтерских системах - 1С, Комтет. | Этот алгоритм часто используется при расчетах в бухгалтерских системах - 1С, Комтет. | ||
| − | + | <br /> | |
| + | ===== Алгоритм ===== | ||
- если тысячные доли рубля меньше 5, то тысячные просто отбрасываются; | - если тысячные доли рубля меньше 5, то тысячные просто отбрасываются; | ||
| Строка 21: | Строка 21: | ||
- в остальных случаях округляем вверх до сотых. | - в остальных случаях округляем вверх до сотых. | ||
| − | Примеры | + | <br /> |
| − | + | ||
| − | + | ===== Примеры округления ===== | |
| − | + | {| class="wikitable" | |
| − | + | !точное число | |
| − | + | !арифметическое | |
| − | + | округление | |
| + | !банковское | ||
| + | округление | ||
| + | |- | ||
| + | |100.004 | ||
| + | |100 | ||
| + | |100 | ||
| + | |- | ||
| + | |100.005 | ||
| + | |100.01 | ||
| + | |100 | ||
| + | |- | ||
| + | |100.006 | ||
| + | |100.01 | ||
| + | |100.006 | ||
| + | |- | ||
| + | |100.014 | ||
| + | |100.01 | ||
| + | |100.01 | ||
| + | |- | ||
| + | |100.015 | ||
| + | |100.02 | ||
| + | |100.02 | ||
| + | |- | ||
| + | |100.016 | ||
| + | |100.02 | ||
| + | |100.02 | ||
| + | |- | ||
| + | |100.024 | ||
| + | |100.02 | ||
| + | |100.02 | ||
| + | |- | ||
| + | |100.025 | ||
| + | |100.02 | ||
| + | |100.03 | ||
| + | |- | ||
| + | |100.026 | ||
| + | |100.03 | ||
| + | |100.03 | ||
| + | |} | ||
| + | <br /> | ||
| + | ===== Пример реализации ===== | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Пример реализации '''[https://replit.com/@AlieksieiSudnic/bank-rounding на php], [https://replit.com/@AlieksieiSudnic/bank-rounding-js на js]'''<br /> | Пример реализации '''[https://replit.com/@AlieksieiSudnic/bank-rounding на php], [https://replit.com/@AlieksieiSudnic/bank-rounding-js на js]'''<br /> | ||
Версия 12:37, 2 ноября 2022
Содержание
Бухгалтерское округление
Описание
При вычислении значений с помощью деления (например, НДС) получаются копейки, которые при последующем суммировании и округлении дают интересный эффект - сумма НДС по нескольким позициям может не равняться суммарному значению НДС, рассчитанному на основе общей суммы.
Для борьбы с этой проблемой применяется «бухгалтерское округление». Так же оно известно под следующими наименованиями: гауссово округление, банковское округление.
Этот способ очень похож на математическое округление, за исключением следующего момента: если за последней значащей цифрой стоит 5, то последнюю цифру увеличивают, если она нечётная, и не изменяют, если чётная.
Такой подход не снимает проблему округления полностью, а только значительно сокращает вероятность накопления ошибки за счет того, что количество «четных» и «нечетных» сумм статистически примерно одинаково. На практике такой точности вполне достаточно.
Этот алгоритм часто используется при расчетах в бухгалтерских системах - 1С, Комтет.
Алгоритм
- если тысячные доли рубля меньше 5, то тысячные просто отбрасываются;
- если тысячные доли рубля равны 5, а количество сотых четное, то тысячные просто отбрасываются;
- в остальных случаях округляем вверх до сотых.
Примеры округления
| точное число | арифметическое
округление |
банковское
округление |
|---|---|---|
| 100.004 | 100 | 100 |
| 100.005 | 100.01 | 100 |
| 100.006 | 100.01 | 100.006 |
| 100.014 | 100.01 | 100.01 |
| 100.015 | 100.02 | 100.02 |
| 100.016 | 100.02 | 100.02 |
| 100.024 | 100.02 | 100.02 |
| 100.025 | 100.02 | 100.03 |
| 100.026 | 100.03 | 100.03 |