Округление чисел и его особенности

Округлением чисел в Python занимается встроенная функция round.
round(number[, ndigits]) — округляет число number до ndigits знаков после запятой (по умолчанию, до нуля знаков, то есть, до ближайшего целого)
Со школы многие привыкли, что, когда (N + 1) знак = 5, а последующие знаки равны нулю, округление производится всегда в большую по модулю сторону.
Однако, как видно из примеров, в Python это не так. Здесь используется так называемое "Банковское округление", то есть округление к ближайшему чётному.
На практике это оказывается не так уж и важно, например:
Что-то не так, правда? На самом деле, всё именно так, как и задумывалось. Просто из-за проблем с точностью чисел с плавающей точкой это число чуть больше, чем 2.85, а потому округляется до 2.9.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Функции округления чисел
Функция math.trunc() отбрасывает дробную часть числа x . Результат будет целым числом.
>>> import math >>> math.trunc(3.14) # 3 >>> math.trunc(-3.14) # -3
math.floor(x) :
Функция math.floor() возвращает x округленное в меньшую сторону до ближайшего целого.
>>> import math >>> math.floor(3.14) # 3 >>> math.floor(-3.14) # -4
math.ceil(x) :
Функция math.ceil() возвращает x округленное в большую сторону до ближайшего целого.
>>> import math >>> math.ceil(3.14) # 4 >>> math.ceil(-3.14) # -3
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функции теории чисел модуля math
- Функции округления чисел модуля math
- Степенные и логарифмические функции
- Тригонометрические функции модуля math
- Функции преобразование меры углов модуля math
- Гиперболические функции модуля math
- Константы и специальные значения модуля math
- Специальные функции модуля math
Как округлить число до десятков тысяч?
Предположим у нас есть число 155467. Необходимо округлить его до десятков тысяч, то бишь получить число 160000. Есть ли в Python какой-то деликатный метод округления числа до разрядов, не прибегая к преобразованию в строковый тип и замены разрядов на нолики.
Отслеживать
задан 25 авг 2021 в 16:08
16 4 4 бронзовых знака
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Зачем строковый тип, если есть round :
x = 155_467 n = 10_000 print(n * round(x/n)) # 160000
Делим, округляем, обратно домножаем.
Отслеживать
ответ дан 25 авг 2021 в 17:14
69.4k 5 5 золотых знаков 20 20 серебряных знаков 51 51 бронзовый знак
Есть вот такой быстрый способ округления в большую сторону:
x = 155467 x -= x % -10000 print(x)
stdout:
160000
Отслеживать
ответ дан 25 авг 2021 в 16:17
18.4k 5 5 золотых знаков 24 24 серебряных знака 48 48 бронзовых знаков
Но это же не настоящее округление, это округление в верхнюю сторону. Даже 150001 до 160000 "округляет".
25 авг 2021 в 17:10
@Эникейщик Да, Вы правы. Указал это в ответе, чтобы не вводить в заблуждение
26 авг 2021 в 11:10
Дисклеймер: Округление происходит только в большую сторону. Удалил бы ответ, но не могу, так как он принят автором.
№32 Функция round() / для начинающих
Round — встроенная функция Python. Ее задача — округлять число с плавающей точкой до той цифры, которую задает пользователь. Если ее не задать, то возвращается ближайшее целое число, ведь значением по умолчанию является 0. Функция round помогает «улучшать» числа с плавающей точкой.
Например, если округлить 4,5 до ближайшего целого, то вернется 5. Однако 4,7 будет результатом, если округлить до одной цифры 4,74. Быстрое округление — важный инструмент работы с такими числами.
- Число с плавающей точкой ( float_number ) представляет собой число, которое нужно округлить
- Количество дробей ( number_of_decimals ) определяет, до какой цифры будет округлено число. Функция возвращает float.
- Если количество цифр не указано, то по умолчанию там стоит ноль. В таком случае округление происходит до ближайшего целого и возвращается тоже целое число.
Примеры работы функции 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 позволяет упростить работу с крупными объемами данных. Ее задача — возвращать число с определенным количеством цифр после точки.
- ТЕГИ
- Уроки Python для начинающих