Функция round() в Python: подробное объяснение с практическими примерами
Функция round() в Python: подробное объяснение
Встроенная функция round() — основной инструмент для числовых работ в Python. Она возвращает значение, округлённое до указанного количества десятичных знаков, по умолчанию округляя до ближайшего целого, если точность не задана.
Синтаксис
round(number, ndigits=None)
- number — числовое значение для округления.
- ndigits — опционально; количество десятичных знаков для сохранения. Если опущено, результат — целое число.
Возвращаемое значение
Когда ndigits опущен, round() возвращает int. Если ndigits задан, результат — float, округлённый до этой точности.
Правила округления
- Если цифра после целевого разряда равна 5 или больше, значение округляется вверх.
- Если она меньше 5, значение усекается до указанной точности.
Почему округление важно: реальный пример
На финансовых рынках округление может влиять на миллионы долларов в торговле. Например, Ванкуверская фондовая биржа в 1982 году усекала цены сделок до трёх десятичных знаков, что привело к накопительной ежемесячной потере около 25 пунктов. Округление вместо усечения даёт гораздо более точные результаты.
# Пример: Усечение против округления
import random
def truncate(num):
return int(num * 1000) / 1000
arr = [random.uniform(0.01, 0.05) for _ in range(1_000_000)]
# Усечение
sum_truncate = 0
for val in arr:
sum_truncate = truncate(sum_truncate + val)
# Округление
sum_round = 0
for val in arr:
sum_round = round(sum_round + val, 3)
print("Truncated sum:", sum_truncate)
print("Rounded sum:", sum_round)
Усечённая сумма может отклоняться на сотни единиц, тогда как округление удерживает отклонение в долях единицы.
Распространённые сценарии использования
Округление чисел с плавающей точкой
# Базовое округление print(round(10.60)) # 11 print(round(10.40)) # 10 print(round(10.3456, 2)) # 10.35 print(round(10.3445, 2)) # 10.34
Округление целых чисел
print(round(15)) # 15
Округление отрицательных чисел
print(round(-2.8)) # -3 print(round(-1.5)) # -2
Округление массивов NumPy
import numpy as np arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323] print(np.round(arr, 2)) # [-0.34 1.46 4.23 -0.34 7.63 5.12]
Использование модуля Decimal для точности
Модуль decimal обеспечивает более тонкий контроль над режимами округления.
import decimal
num = decimal.Decimal('15.456')
print(num.quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP)) # 15.46
Ключевые выводы
- Используйте
round(number, ndigits)для стандартного округления. - Пропуск
ndigitsвозвращает целое число; его указание — float. - Для критичных финансовых или научных расчётов рассмотрите
decimalдля детерминированного округления.
Python
- Lambda-функции в Python: практическое руководство по анонимным функциям
- Генераторы в Python: эффективная итерация и продвинутые сценарии
- Замыкания в Python: как вложенные функции захватывают переменные
- Декораторы в Python: улучшайте функции экспертными техниками
- Перегрузка операторов в C++: практическое руководство с примерами кода
- Функции в C++: подробное объяснение с практическими примерами кода
- Функция print() в Python: практическое руководство с примерами
- Мастерство метода strip() в Python: подробное руководство и практические примеры
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Мастерство строк форматирования format() в Python: понятные примеры