Округление чисел: round и подводные камни
Функция round
PYTHON-КОД
1 2
Банковское округление
Казалось бы, round(2.5) должно дать 3. Но Python округляет половинки к ближайшему чётному:
| Выражение | Результат | Почему |
| round(0.5) | 0 | 0 — чётное |
| round(1.5) | 2 | 2 — чётное |
| round(2.5) | 2 | 2 — чётное |
| round(3.5) | 4 | 4 — чётное |
Округление вверх и вниз
Часто (особенно в задании 7 — кодирование) нужно округлять именно вверх. Для этого — модуль math:
| Функция | Что делает | Пример |
| math.ceil(x) | всегда вверх | ceil(6.1) → 7 |
| math.floor(x) | всегда вниз | floor(6.9) → 6 |
Округление вверх без math
«Сколько блоков по k вмещает n с округлением вверх» — есть приём через целочисленное деление:
PYTHON-КОД
1 2
Прибавляем k-1 перед целочисленным делением — дробный остаток «подталкивает» результат вверх. Часто встречается в задачах на упаковку и кодирование.
Важно: round может удивить
Из-за банковского округления round не всегда даёт ожидаемое для «.5». Если в задаче нужно строгое округление вверх — бери math.ceil или приём (n + k − 1) // k, не полагайся на round. На большинстве задач ЕГЭ это не мешает, но знать стоит.
