Необязательный аргумент
Сигнатура встроенной функции имеет вид round(number, ndigits=None). Без второго аргумента для обычного float получается ближайшее целое типа int. При явно переданном 0 результат округляется до целых разрядов, но остаётся float.
print(round(10.25)) # 10
print(round(10.25, 0)) # 10.0
print(round(10.25, 1)) # 10.2
В источнике встречаются противоречащие этому подписи 10.0 для первого вызова и 10.3 для третьего. Здесь они исправлены по документации и исполнению. При точном равенстве расстояний используется чётный вариант, а не безусловное округление вверх.
Задание источника
Для поездки заданы 450 км, расход 8,4 л на 100 км, цена 64,2 рубля за литр и четыре пассажира. Это учебные данные, не текущая цена топлива.
distance = 450
fuel_consumption = 8.4
fuel_price = 64.2
passengers = 4
fuel = distance / 100 * fuel_consumption
print(round(fuel, 1))
trip_cost = fuel * fuel_price
print(round(trip_cost, 2))
per_person = trip_cost / passengers
print(round(per_person))
Вывод — 37.8, 2426.76 и 607, каждый результат на новой строке.
Не округлять раньше времени
В решении округление применяется при выводе; последующие вычисления используют исходные промежуточные значения. Это отличается от повторного сохранения округлённого результата на каждом шаге.
round() возвращает число, но не гарантирует фиксированное количество знаков при печати: число 2.5 после округления до двух разрядов не обязано отображаться как 2.50. Для фиксированного внешнего формата используется форматирование строки.
Hexlet / Code Basics и участники · Исходный урок · Документация round() · GNU AGPL v3. Ошибочные подписи и значение по умолчанию исправлены явно.