Округление в Python — round, int, модуль math
При выполнении ряда арифметических операций пользователю нужно следовать правилам округления. Преобразовывать нужно в большую или меньшую сторону, до целого значения или до сотых.
В Python для округления доступны функции round() , int() и модуль math . Последний дополнительно импортируется.
Встроенные функции
Для операции округления в Python есть встроенные функции — round() и int()
round
round(number[, ndigits]) — округляет число (number) до ndigits знаков после запятой. Это стандартная функция, которая для выполнения не требует подключения модуля math.
По умолчанию операция проводится до нуля знаков — до ближайшего целого числа. Например:
round(3.5) > 4 round(3.75, 1) > 3.8
Чтобы получить целый показатель, результат преобразовывают в int .
Синтаксически функция вызывается двумя способами.
- round(x) — это округление числа до целого, которое расположено ближе всего. Если дробная часть равна 0,5, то округляют до ближайшего четного значения.
- round(x, n) — данные х округляют до n знаков после точки. Если округление проходит до сотых, то n равен «2», если до тысячных — «3» и т.д.
int
int — встроенная функция, не требующая подключения дополнительных модулей. Её функция — преобразование действительных значений к целому путем округления в сторону нуля. Например:
int(5.9) > 5 int(-5.77) > -5
Для положительных чисел функция int аналогична функции math.floor() , а для отрицательных — аналогично math.ceil() . Например:
import math math.floor(3.999) > 3 math.ceil(3.999) > 4
Чтобы число по int преобразовать по математическим правилам, нужно выполнить следующие действия.
- Если число положительное, добавить к нему 0,5;
- Если число отрицательное, добавить -0,5.
Синтаксически преобразование оформляется так:
num = 5.77 int(num + (0.5 if num > 0 else -0.5)) > 6
Функции из библиотеки Math
Модуль необходим в Python. Он предоставляет пользователю широкий функционал работы с числами. Для обработки алгоритмов сначала проводят импорт модуля.
math.ceil
Функция получила название от английского слова » ceiling » — » потолок «
Функция преобразовывает значение в большую сторону (вверх). Этот термин применяется и в математике. Он означает число, которое равно или больше заданного.
Любая дробь находится между двумя целыми числами. Например, 2.3 лежит между 2 и 3. Функция ceil() определяет большую сторону и возводит к нему результат преобразования. Например:
import math math.ceil(3.25) > 4
Алгоритм определяет большую границу интервала с учетом знака:
import math math.ceil(-3.25) > -3
math.floor
Функция получила название от английского слова » floor » — » пол «
math.floor() действует противоположно math.ceil() — округляет дробное значение до ближайшего целого, которое меньше или равно исходному. Округление происходит в меньшую сторону (вниз):
import math math.floor(3.9) > 3 math.floor(-2.1) > -3
При округлении учитывается знак перед данными.
math.trunc
Функция получила название от английского слова » truncate » — » урезать «
Функция характеризуется отбрасыванием дробной части. После преобразования получается целое значение без учета дроби. Такой алгоритм не является округлением в арифметическом смысле. В Пайтон просто игнорируется дробь независимо от ее значения:
import math math.trunc(7.11) > 7 math.trunc(-2.1) -2
Избавиться от дроби можно без подключения модуля. Для этого есть стандартная функция int Она преобразовывает дробные числа в целые путем игнорирования дроби.
Различие округления в Python 2 и Python 3
В Python 2 и Python 3 реализованы разные принципы округления.
В Python 2 используется арифметическое округление. В нем наблюдается большое количество погрешностей, что приводит к неточностям в процессе вычислений.
Во втором Python есть только 4 цифры, которые ведут к преобразованию к меньшему значению — 1, 2, 3 и 4. Также 5 цифр, которые приводят к большему значению — 5, 6, 7, 8, 9. Такое неравное распределение ведет к тому, что погрешность постоянно нарастает.
Python 2 по правилам арифметического округления преобразует число 5,685 в 5,68 до второго знака. Такая погрешность связана с тем, что десятичные цифры float в двоичном коде невозможно корректно представить.
В Python 3 используются принципы банковского округления. Это означает, что преобразование производится к ближайшему четному. В таком случае также не удается полностью избежать возникающих ошибок, но программисты добиваются точности в подсчетах.
2,5 по правилам банковского преобразования будет равно 2, а 3,5 = 4 (значения возводятся к близкому четному). Минимизировать погрешности можно благодаря практически равной вероятности, что перед пятеркой будет четное или нечетное число.
Округление до двух десятичных знаков в Python

В работе с числами с плавающей точкой часто возникает ситуация, когда требуется уменьшить количество десятичных знаков после запятой. Например, при расчетах, связанных с финансами, обычно используется два знака после запятой, что соответствует копейкам в рублях или центам в долларах.
Представьте ситуацию: при вычислении процентов от числа получается результат, содержащий множество десятичных знаков после запятой. Например, вычисление 7% от 25 дает 1.75, но если к этому числу прибавить 10%, то результат будет 1.925. Если такое число использовать в финансовых расчетах, то необходимо его округлить до двух знаков после запятой.
В Python это можно сделать несколькими способами.
Использование функции round()
Самый простой способ — использовать встроенную функцию round() . Вторым аргументом в эту функцию передается количество знаков после запятой, до которого следует округлить число.
num = 1.925 rounded_num = round(num, 2) print(rounded_num) # Output: 1.93
Использование форматирования строк
Еще один способ — использовать форматирование строк с помощью оператора % или метода format() . В обоих случаях в шаблон строки вставляется спецификатор формата, определяющий количество знаков после запятой.
num = 1.925 # Использование оператора % print("%.2f" % num) # Output: 1.93 # Использование метода format() print("".format(num)) # Output: 1.93
Вывод
В Python есть несколько способов округления чисел с плавающей точкой до определенного количества знаков после запятой. Выбор метода зависит от конкретной задачи и предпочтений программиста.
Округление числа вверх в Python
Округление чисел — это типичная задача, с которой часто сталкиваются при работе с числами с плавающей точкой. Например, есть число 2.3 и требуется округлить его вверх до ближайшего целого числа, то есть до 3.
В Python есть встроенная функция round() , которую можно было бы использовать для этой цели. Однако эта функция округляет число до ближайшего целого числа, и если дробная часть числа меньше 0.5, то число округляется вниз. Таким образом, round(2.3) будет равно 2, а не 3.
Попытка добавить 0.5 к числу и использовать функцию int() для преобразования в целое число также не дает желаемого результата, поскольку int() всегда округляет число вниз. То есть int(2.3 + .5) также будет равно 2.
Для округления числа вверх в Python можно использовать модуль math и его функцию ceil() . Функция ceil() принимает в качестве аргумента число с плавающей точкой и возвращает ближайшее большее целое число.
Пример использования функции ceil() :
import math num = 2.3 rounded_num = math.ceil(num) print(rounded_num) # выводит: 3
В этом примере число 2.3 округляется вверх до 3 с помощью функции ceil() .
Важно помнить, что функция ceil() всегда округляет число вверх, даже если дробная часть числа очень мала. Например, math.ceil(2.1) также вернет 3.
Округление в Python
В Python существует множество способов округлить число: от использования встроенной функции round до спецификаторов форматирования в f-строках, а также специальных функций в сторонних библиотеках, вроде NumPy. Рассмотрим все эти способы и сравним их удобство, применимость, а также производительность
В зависимости от ваших задач в Python можно выбрать несколько способов округления:
Округление с помощью функции round
Самый простой способ округлить вещественное число в Python — это воспользоваться функцией round(), которая принимает от одного до двух параметров. Первый параметр отвечает за само число, а второй за количество знаков после десятичной точки, которое нужно оставить.
Округление до двух знаков после десятичной точки
number = 12.443 print(round(number, 2)) 12.44
Округление до 0 знаков
Обратите внимание, что если вторым параметром указать 0, то будет округлено до 0 знаков после десятичной точки, но при этом результат будет вещественным.
number = 12.443 print(round(number, 0)) 12.0
Округление до целого
Чтобы округлить до целого, нужно убрать второй параметр из функции round().
number = 12.443 print(round(number)) 12
Округление Decimal
DECIMAL — это вещественный тип данных с повышенной точностью, который нередко используется в финансовой и банковской сферах. Как и другие числа, Decimal числа можно округлять в любую сторону, но есть особенности.
Округление большого количества чисел
Иногда нам приходится округлять большое количество вещественных чисел, например результаты каких-то экспериментов и тд. И существует несколько способов это сделать. Рассмотрим разные варианты, а также их производительность.
Округление NumPy
Numpy — это библиотека для Python, с помощью которой можно выполнять самые разные математические вычисления. Сама библиотека написана на языке C, что делает её очень быстрой.