%PercentLab

Округление по правилам, вниз и вверх и проблема 0,1 + 0,2 — всё об округлении в калькуляторе

Чем различаются округление по правилам, отбрасывание (вниз) и округление вверх, как округляют денежные суммы, что такое банковское округление, почему в компьютере 0.1 + 0.2 = 0.30000000000000004 и как с этим работает этот калькулятор.

Попробовать в калькуляторе →

В процентных расчётах много деления и умножения на дроби, поэтому результат редко получается ровным. В зависимости от того, как обрабатывается дробная часть, один и тот же расчёт расходится на несколько копеек или центов. Зная правила, можно объяснить расхождения между чеком и коммерческим предложением.

Три способа округления

Можно менять и шаг. 12 345 с отбрасыванием до 10 даёт 12 340, а округление по правилам до 100 — 12 300.

Где что используют

Округление отрицательных чисел

−2,5 при округлении — это −3 или −2? Этот калькулятор округляет от нуля и выдаёт −3. Отбрасывание идёт к нулю (−1,239 → −1,23), округление вверх — от нуля. Иными словами, независимо от знака одно и то же правило применяется к модулю числа.

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

Ровно половину (…5) округляют к ближайшему чётному (2,5 → 2, 3,5 → 4). Этот способ используют в некоторых бухгалтерских системах и языках программирования, чтобы уменьшить смещение при очень многократном округлении. В быту и в этом калькуляторе применяется обычное округление по правилам.

Почему в компьютере 0.1 + 0.2 = 0.30000000000000004

Компьютер хранит числа в двоичной системе. Так же как 1/3 в десятичной системе — бесконечная дробь 0,333…, число 0,1 в двоичной системе — бесконечная дробь, поэтому оно хранится не точно, а как очень близкое округлённое значение. Из-за этого в большинстве языков, включая JavaScript, 0.1 + 0.2 даёт 0.30000000000000004.

По той же причине распространённый способ округлить 1,005 до двух знаков (toFixed(2)) возвращает не 1,01, а 1,00: на самом деле 1,005 хранится как 1,00499999….

Как считает этот калькулятор

Отображаемые разряды и реальное значение

Настройка Знаков после запятой вверху меняет только число показываемых знаков. 1 ÷ 3 × 100 внутри равно 33,3333333333, а при 2 знаках отображается как 33,33. Кнопка «Копировать» копирует показанное значение.

Итог

Если результаты расходятся на несколько копеек из-за разных правил округления, это не ошибка, а разница в правилах. Если сумма не сходится, сначала проверьте: ① на каком этапе выполнялось округление и ② с каким шагом и каким способом.

Попробовать в калькуляторе →