Как округлить число в python
Перейти к содержимому

Как округлить число в python

  • автор:

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

Python 3 логотип

Округлением чисел в 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 для начинающих

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *