Как округлить число в Python (функция round() и десятичное число)
Узнайте, как округлять числа с плавающей запятой в Python. Познакомьтесь с округлением Banker, настраиваемой десятичной точностью и форматированием чисел с плавающей запятой для отображения.
Обзор
Арифметика с плавающей запятой в компьютерах иногда может приводить к неожиданным проблемам с точностью из-за того, как двоичные системы хранят десятичные числа (например, `0,1 + 0,2` оценивается как `0,300000000000000004`). При предоставлении чисел пользователям или подготовке показателей округление чисел является распространенным требованием. Python предоставляет несколько способов добиться этого.
Основным инструментом является встроенная функция round(number, ndigits). Требуется число и необязательный счетчик точности. Если `ndigits` опущено, оно округляется до ближайшего целого числа. Если указано `ndigits`, оно округляется до указанного количества десятичных знаков.
Ключевым свойством функции Python round() является то, что она использует «банковское округление» (округление до половины до четного). Когда число находится ровно посередине между двумя целыми числами (например, `2,5` или `3,5`), Python округляет до ближайшего *чётного* числа. Это означает, что round(2.5) равен 2, а round(3.5) равен 4. Несмотря на то, что это математически справедливо для больших наборов данных, чтобы предотвратить смещение вверх, для точных финансовых расчетов вам следует использовать инструменты квантования «десятичного» модуля.
Код и вывод выполнения
Этот скрипт демонстрирует округление чисел с плавающей запятой с использованием встроенной функции округления, примеров округления Banker и модуля decimal.
from decimal import Decimal, ROUND_HALF_UP
val = 3.14159
# 1. Round to nearest integer
print("Nearest Integer:", round(val))
# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))
# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4
# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3Пошаговая реализация
- Вызовите встроенную функцию round(number), чтобы округлить число с плавающей запятой до ближайшего целого числа.
- Передайте второй аргумент (например, round(num, 2)), чтобы указать количество сохраняемых десятичных знаков.
- Используйте десятичный модуль с ROUND_HALF_UP для строгих вычислений финансового округления.
Часто задаваемые вопросы
Почему round(2.5) возвращает 2 вместо 3 в Python?
Python использует округление Банкера, которое округляет половину чисел до ближайшего четного целого числа. Это уменьшает статистическую погрешность (округление половинных чисел в большую сторону всегда вызывает небольшое смещение вверх в больших наборах данных).
Как округлить число всегда в большую или всегда в меньшую сторону?
Импортируйте математический модуль и используйте math.ceil(x) для округления до следующего целого числа или math.floor(x) для округления до предыдущего целого числа.
Связанные темы
Изучите лучшие методы форматирования строк в Python. Сравните современные f-строки, format() и процентное форматирование с примерами кода.
Как преобразовать строку в Int в PythonУзнайте, как преобразовать строку в целое число в Python с помощью функции int(). Безопасно обрабатывайте ошибки и преобразуйте числа из двоичного, восьмеричного или шестнадцатеричного формата.
Рекомендуемые ресурсы Python
Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.
Объяснение переменных и типов данных Python
Понимать переменные Python и основные типы данных (строки, целые числа, числа с плавающей запятой, логические значения). Полное руководство для начинающих по распределению памяти в Python.
Шпаргалка по словарным методам Python
Изучите словарные методы Python. Полное справочное руководство по вставке, извлечению, обновлению и проверке пар ключ-значение.
Python против JavaScript: какой язык программирования лучше?
Всестороннее сравнение Python и JavaScript. Изучите синтаксические различия, производительность, варианты использования (серверная и клиентская части) и примеры кодирования.