- Округление в Python
- Введение в функцию Python round()
- Примеры функции Python round()
- 1) Примеры функции Python round()
- 2) Пример функции Python round() с отрицательными однозначными числами
- 3) Пример функции Python round() со связями
- Как округлить от нуля
- Резюме
- №32 Функция round() / для начинающих
- Пример №1 — один параметр
- Пример №2 — оба параметра
- Практические примеры
- Пример №1 — функция round помогает при работе с дробями
- Пример №2 — исключения и ошибки
- Сокращение
- Выводы
- Round Python. Округление
- Введение в тему
- Встроенные функции
- Round
Округление в Python
Краткое описание: в этом уроке вы узнаете, как использовать функцию Python round() для округления числа.
Введение в функцию Python round()
Округление означает упрощение числа, но сохранение его значения близким к исходному. Например, 89, округленное до ближайшей десятки, равно 90, потому что 89 ближе к 90, чем к 80.
Для округления числа в Python используется встроенная функция round() :
Code language: Python (python)round(number [, ndigits])
Функция round() округляет число до ближайшего кратного 10 -цифры .
Другими словами, функция round() возвращает число , округленное с точностью до цифр после десятичной точки.
Если ndigits опущено или None , то round() вернет ближайшее целое число.
Примеры функции Python round()
Давайте рассмотрим несколько примеров, чтобы лучше понять функцию round() .
1) Примеры функции Python round()
Следующий пример использует функцию round() без передачи ndigits :
Code language: Python (python)round(1.25)
Code language: Python (python)1
Возвращается целое число 1 .
Однако если передать ndigits как ноль, функция round() возвращает float 1.0:
Code language: Python (python)round(1.25, 0)
Code language: Python (python)1.0
Ниже показано, как функция round() работает под капотом:
Поскольку ndigits равно нулю, функция round() округляет число 1.25 до ближайшего кратного 10 -(0) = 1.
2) Пример функции Python round() с отрицательными однозначными числами
В следующем примере используется функция round() с отрицательными ndigits :
Code language: Python (python)round(15.5, -1)
Поскольку ndigits равно -1 , функция round() округляет число 15.5 до ближайшего кратного 10 (10 -(-1) ):
Поскольку 15.5 находится между 10 и 20 (кратно 10 ), оно ближе к 10 . Поэтому функция round() возвращает 10 .
3) Пример функции Python round() со связями
Когда вы округляете число, расположенное в середине двух чисел, Python не может найти ближайшее число.
Например, если вы округлите число 1.25 с n — 1 . Ближайшего числа не будет:
В этом случае Python использует стандарт IEEE 754 для округления, называемый округлением банкира.
При банкирском округлении число округляется до ближайшего значения, при этом связи округляются до ближайшего значения с четной младшей значащей цифрой.
Как правило, наименьшая значащая цифра в числе — это крайняя правая цифра.
Банковское округление основано на идее, что статистически 50% чисел округляются в большую сторону, а 50% — в меньшую.
Code language: Python (python)round(1.25, 1)
Потому что наименьшая значащая цифра 1.2 — 2 , что является четным:
Аналогично, округление 1.35 вернет 1.4 :
Code language: Python (python)round(1.35, 1)
Python использует округление Банкера, но не округление от нуля, потому что оно менее предвзято.
Например, если вы усредните три числа 1.5 , 2.5 и 3.5 , округление от нуля вернет 3 .0, в то время как округление банкира вернет 2.66 :
Число | Округление банкира | Округление от нуля |
---|---|---|
1.5 | 2 | 2 |
2.5 | 2 | 3 |
3.5 | 4 | 4 |
Среднее | 2.66666… | 3.0 |
Как округлить от нуля
Python не предоставляет прямого способа округления числа от нуля, как можно было бы ожидать. Например:
Число | Округление от нуля |
---|---|
1.2 | 1 |
1.5 | 2 |
Для округления числа от нуля обычно используется следующее выражение:
Code language: Python (python)int(x + 0.5)
Это выражение правильно работает для положительных чисел. Например:
Code language: Python (python)print(int(1.2 + 0.5)) print(int(1.5 + 0.5))
Code language: Python (python)1 2
Однако оно не работает для отрицательных чисел:
Code language: Python (python)print(int(-1.2 + 0.5)) print(int(-1.5 + 0.5))
Code language: Python (python)0 -1
Для отрицательных чисел следует вычитать 0,5, а не прибавлять.
Следующий пример работает правильно для отрицательных чисел:
Code language: Python (python)print(int(-1.2 - 0.5)) print(int(-1.5 - 0.5))
Ниже определена вспомогательная функция, которая округляет число:
Code language: Python (python)def round_up(x): if x > 0: return int(x + 0.5) return int(x - 0.5)
Модуль Python math предоставляет вам функцию copysign() :
Code language: Python (python)math.copysign(x, y)
Функция copysign() возвращает абсолютное значение x , но знак y .
И вы можете использовать эту функцию copysign() для разработки функции round_up() без проверки того, является ли x положительным или отрицательным:
Code language: Python (python)from math import copysign def round_up(x): return int(x + copysign(0.5, x))
Резюме
- Используйте функцию round(number, ndigits) для округления числа до точности ndigits после десятичной точки.
№32 Функция round() / для начинающих
Round — встроенная функция Python. Ее задача — округлять число с плавающей точкой до той цифры, которую задает пользователь. Если ее не задать, то возвращается ближайшее целое число, ведь значением по умолчанию является 0. Функция round помогает «улучшать» числа с плавающей точкой.
Например, если округлить 4,5 до ближайшего целого, то вернется 5. Однако 4,7 будет результатом, если округлить до одной цифры 4,74. Быстрое округление — важный инструмент работы с такими числами.
- Число с плавающей точкой ( float_number ) представляет собой число, которое нужно округлить
- Количество дробей ( number_of_decimals ) определяет, до какой цифры будет округлено число. Функция возвращает float.
- Если количество цифр не указано, то по умолчанию там стоит ноль. В таком случае округление происходит до ближайшего целого и возвращается тоже целое число.
- Если >= 5, то добавляется +1.
- Если Примеры работы функции round в Python
Пример №1 — один параметр
# Целые числа
a = 12
round (a)
print (a)
# Десятичные числа
b = 21.7
c = 21.4
print(round(b))
print(round(c))Здесь возвращается целое число, до которого и округляется число с плавающей точкой.
Пример №2 — оба параметра
# когда последняя цифра 5
a = 5.465
print(round(a, 2))
# когда последняя цифра >=5
b = 5.476
print(round(b, 2))
# когда последняя цифра меньше 5
c = 5.473
print(round(c, 2))Практические примеры
Пример №1 — функция round помогает при работе с дробями
Когда дроби нельзя конвертировать в десятичные дроби, в дело вступает функция round. После десятичной точки обычно много цифр, как например в случае с 22/7 (Pi). Но обычно используется не больше 2-4 цифр. Вспомогательный встроенный в round тип будет округлять до ближайшего кратного 10.
round(3.675, 2) вернет 3,67, а не 3,68. Удивительно, но это не баг. Результат указывает на то, что большая часть дробей не могут считаться точными числами с плавающей точкой.
a = 1/6
print(a)
print(round(a, 2))Пример №2 — исключения и ошибки
Функция round округлит 2, 2,5 и 1,5 до 2. Это тоже не баг, а нормальное поведение функции.
a = 1.5
b = 2
c = 2.5
print(round(a))
print(round(b))
print(round(c))Если смотреть в целом, то работает функция вот так:
tup = (-40.95, 50.85, 10.98, 20.26, 30.05) # Создание кортежа
lis = [-39.29, -42.15 , -39.97, -10.98, 32.65] # Создание списка
print('Округление отрицательного десятичного числа = %.2f' %round(-19.48476))
print('Округление положительного десятичного числа = %.2f' %round(15.98763))
print('Округление со вторым параметром при положительном значении = %.3f' %round(11.98763, 3))
print('Округление со вторым параметром при отрицательном значении = %.3f' %round(-18.48476, 3))
print('Округление элементов в списке = %d' %round(lis[2]))
print('Округление элементов в списке = %d' %round(lis[4]))
print('Округление элементов в кортеже = %d' %round(tup[2]))
print('Округление элементов в кортеже = %d' %round(tup[4]))
print('Округление сумы чисел = %.2f' %round(20 + 40 - 20.6578, 2))
Округление отрицательного десятичного числа = -19.00
Округление положительного десятичного числа = 16.00
Округление со вторым параметром при положительном значении = 11.988
Округление со вторым параметром при отрицательном значении = -18.485
Округление элементов в списке = -40
Округление элементов в списке = 33
Округление элементов в кортеже = 11
Округление элементов в кортеже = 30
Округление сумы чисел = 39.34Есть разные метода функции округления в Python. Одна из них — это сокращение.
Сокращение
Сокращение используется для уменьшения размеров элементов. Это самый простой способ округления до конкретного числа. Для положительных чисел функция округляет их до ближайшего целого в меньшую сторону, а для отрицательных — в большую.
Например, round(565.5556, -2) используется как функция сокращения. Она вернет 600.
Выводы
Функция round позволяет упростить работу с крупными объемами данных. Ее задача — возвращать число с определенным количеством цифр после точки.
Round Python. Округление
Основы
Введение в тему
Зачастую при вычислениях, а их в работе программиста не мало, мы сталкиваемся с задачами округления. Округлять можно по разному: вверх, вниз и с разной степенью точности. В языке Пайтон для выполнения этого класса задач предусмотрено несколько доступных инструментов: функции round(), int(), а так же модуль math. Но, есть и подводные камни. Обо всём этом Вы узнаете из данного урока.
Встроенные функции
Начнём с рассмотрения встроенных функций: round и int. Что означает «встроенные»? Всё просто: чтобы их использовать не надо ничего подключать или импортировать – просто пишете имя функции и она уже готова к бою.
Round
Функция round – округляет число до необходимой точности (заданного количества знаков после запятой).
Точность является не обязательным параметром и, если её не задать, то Python округлит число, указанное в скобках, до ближайшего целого числа:
результат_округления = round(3.14) print(результат_округления) # Вывод: 3 результат_округления = round(3.94) print(результат_округления) # Вывод: 4 import math результат_округления = round(math.pi, 5) print(результат_округления) # Вывод: 3.14159Со школы многие привыкли, что, когда (N + 1) знак = 5, а последующие знаки равны нулю, округление производится всегда в большую по модулю сторону.
Если дробная часть равна 0,5, то результатом округления будет ближайшее четное число.
При округлении функцией round(), можно получить следующее: