DamiRocK

Python: параметры round() и округление учебной стоимости поездки

Считаем топливо, общую стоимость и долю пассажира. Исправляем неточности источника о round(10.25), значении ndigits и округлении половины.

Необязательный аргумент

Сигнатура встроенной функции имеет вид 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. Ошибочные подписи и значение по умолчанию исправлены явно.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.