
Округление в 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. Он предоставляет пользователю широкий функционал работы с числами. Для обработки алгоритмов сначала проводят импорт модуля.
import mathmath.ceil
Функция получила название от английского слова "ceiling" — "потолок"
Функция преобразовывает значение в большую сторону (вверх). Этот термин применяется и в математике. Он означает число, которое равно или больше заданного.
Любая дробь находится между двумя целыми числами. Например, 2.3 лежит между 2 и 3. Функция ceil() определяет большую сторону и возводит к нему результат преобразования. Например:
import math
math.ceil(3.25)
> 4Алгоритм определяет большую границу интервала с учетом знака:
import math
math.ceil(-3.25)
> -3math.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 (значения возводятся к близкому четному). Минимизировать погрешности можно благодаря практически равной вероятности, что перед пятеркой будет четное или нечетное число.





так и непонятно, как округлить число по правилу "если 5 - то в большую сторону)
*** Python 3.12.6 (tags/v3.12.6:a4a2d2b, Sep 6 2024, 20:11:23) [MSC v.1940 64 bit (AMD64)] on win32. ***
>>> round(123421.95,1)
123421.9
>>> round(123421.85,1)
123421.9
>>> round(123421.75,1)
123421.8
>>> round(123421.65,1)
123421.6
>>> round(123421.55,1)
123421.6
>>> round(123421.45,1)
123421.4
>>> round(123421.35,1)
123421.4
>>> round(123421.25,1)
123421.2
>>> round(123421.15,1)
123421.1
>>> round(123421.05,1)
123421.1
>>>
print(math.round(check_2 - chek_1, 1)) AttributeError: module 'math' has no attribute 'round'так будет работать:
print(round(check_2 - chek_1, 1))Мне нужно округлить данные об оперативной памяти, как это сделать?
system_ram = float(os_info.TotalVisibleMemorySize) / 1048576)