Функция round в Python на примерах

Round – это пример встроенной функции Python. Она предназначена для округления числа типа float до заданного пользователем разряда. Если его не указать, вернется ближайшее целое число, что аналогично указанию разряда 0. Собственно, эта цифра и стоит по умолчанию. 

С помощью функции round мы можем «улучшать» дробные числа. Это означает, что они округляются в большую сторону. Например, если попробовать округлить до самого ближнего целочисленного числа значение 4,5, то на выходе мы получим 5. А если округлить 3,74, то на выходе будет 3,7. Одним словом, в соответствии с математическими законами. Таким образом, с помощью этой функции можно быстро округлить значение.

Функция round() – использование

Функция round() нашла применение в различных областях деятельности человека. Фактически везде, где может понадобиться округление чисел, требует использования этой функции.

Вообще, задача функции – сделать число более читаемым. Поэтому она используется сейчас в тех ситуациях, когда надо показывать «красивые» числа. Для реальных вычислений функцию лучше не использовать, так, как искажения в вычислениях при их большом количестве могут быть колоссальными.

Многие слышали об эффекте бабочки. Если выражать его в метафорической форме, то он звучит следующим образом: если на одном конце света бабочка взмахивает крыльями, в другой стороне планеты из-за этого возникнет ураган. Почему так? Потому что подавляющее количество систем, существующих в мире, нелинейные. И это же правило касается современных компьютерных приложений. 

Функция round в Python на примерахК слову, этот эффект был открыт Эдвардом Лоренцом. Он и не был математиком вовсе, но по роду его деятельности ему повезло сделать такое открытие. Он помог полностью перевернуть понимание того, как устроена эта наука. Когда-то он пытался создать прогноз погоды. Та задача, которая перед ним стояла, не была трудной. Необходимо было предоставить вводные данные, а дальше математическая модель на компьютере уже должна была сама прогнозировать погоду. Но в самой модели результаты одних вычислений использовались и дальше. И в этом была основная проблема.

В один момент ему захотелось повторить изначальные расчеты в этой цепочке. И оказалось, что они не сошлись. Он упорно пытался найти решение проблемы. Причина была в том, что Лоренц округлял значения до трех знаков после запятой. Вообще, разница между округленным значением и реальным, была очень маленькая. Тем не менее, прогнозы стали принципиально отличаться друг от друга. 

В целом, у первых вычислений в цепочке соответствие значений друг к другу было. Тем не менее, чем дальше они продвигались по ней, тем больше оказывалась разница. В результате, один прогноз говорил, что будет тихая солнечная погода, а второй предсказывал сильнейшие дожди. 

В то время компьютеры еще плохо справлялись с настолько точными расчетами. В результате, и был установлен эффект бабочки, который говорит, что в нелинейных системах малые изменения на входе или на каком-то звене цепи могут приводить к колоссальным отличиям результатов на выходе.

К слову, человек часто недооценивает малые числа, но практика показывает, что они в совокупности могут привести к катастрофическим последствиям. Так, в 2008 году произошло то, что казалось невозможным: целая совокупность маловероятных событий сошлись в одной точке во времени. Да и пандемия, которая сейчас, началась с одного случая заражения. Так что нужно следить за точностью вычислений.

Впрочем, все равно нужно знать, как работать с округлением чисел в Python. Ведь выводить информацию пользователю все равно нужно в удобном для чтении виде. Поэтому приступаем к рассмотрению синтаксиса и примеров использования функции round().

Синтаксис

Синтаксис функции round() следующий:

round(float_number, number_of_decimals)

А теперь расшифруем параметры, используемые здесь:

  • float_number – это число с плавающей точкой. Это как раз то число, с которым эта функция должна провести округление.
  • number_of_decimals – параметр, означающий разряд числа, до которого должно осуществляться округление. Этой функцией возвращается дробное число.

Как говорилось выше, если отсутствует указание конкретного количества цифр, там по умолчанию ставится ноль. В этом случае округление осуществляется до ближайшего целого, а назад возвращается также целочисленное значение.

Эта функция работает по таким правилам:

  1. Если следующее значение перед тем разрядом, до которого нужно округлить число, больше или равно пяти, то добавляется к округление осуществляется в большую сторону.
  2. Если это значение меньше пяти, то результат будет таким же, как и до десятых.

Функция round в Python– примеры работы

Пример 1 – использование одного параметра в функции 

# Целые числа

a = 12

round (a)

print (a)



# Десятичные числа

b = 21.7

c = 21.4

print(round(b))

print(round(c))

В выводе окажутся следующие значения:

12

22

21

Как работает этот код? Сначала мы объявили переменную a, которой присвоили значение 12. После этого, мы применили к ней функцию round(), использовав в качестве ее аргумента нашу переменную. А потом мы дали инструкцию напечатать значение этой переменной.

Следующий блок – это демонстрация работы функции с десятичными числами. Сначала мы создали две переменные b и c, после чего дали команду напечатать их округленное значение. Соответственно, получились значения 12, 22 и 21, согласно всем описанным выше законам. 

Пример 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))

 В каждом из вариантов использования функции round() мы использовали два параметра – название переменной, значение которой нужно округлить и разряд. Во всех случаях мы округляли до сотых. Следовательно, использовали цифру 2.

А дальше функция работает по всем описанным выше законам. 

В первом примере мы показали, как работает функция, когда последняя цифра – 5. Во втором – если она больше пяти, а в третьем – если меньше 5. Видим, что в первом случае округление произошло в меньшую сторону, во втором – в большую, а в третьем – в меньшую. 

5.46

5.48

5.47

Практика

А теперь давайте разберем некоторые ситуации, когда эта функция может понадобиться на практике и ряд нюансов, которые при этом нужно учитывать.

Пример 1 – использование функции round для работы с дробями

Бывают ситуации, когда нет возможности конвертировать обычные дроби в десятичные. В этом случае функция round может пригодиться. Как правило, за десятичной дробью следует немало цифр. Например, как в случае с 22/7 (Pi). Но что делать, если надо отобразить лишь 2-4 цифры после запятой? В этом случае можно воспользоваться функцией round(), чтобы округлить до нужного количества знаков. 

А теперь на примере. Попробуйте угадать, какое значение будет возвращено, если использовать функцию round(3.675, 2)? Правильный ответ – 3,67, а не 3,68. К слову, здесь нет ничего удивительного. Дело в том, что дроби, как правило, не считаются точными числами с плавающей точкой. Поэтому такие нюансы могут возникать.

А теперь код для наглядности. 

a = 1/6

print(a)

print(round(a, 2))

И пример вывода.

0.16666666666666666

0.17

Пример 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))

Использование функции round() для сокращения

В каких случаях может понадобиться сокращение? Например, если необходимо уменьшить размер элементов. Это – наиболее простой вариант, как производится округление до определенного знака. Для чисел больше нуля округление осуществляется до ближайшего целого в меньшую сторону. Если сокращается отрицательное, то в большую.

Например, функция round(565.5556, -2) используется в качестве функции сокращения. Ею будет возвращено значение 600, если ее результат вывести в переменную.

Выводы

Таким образом, с помощью функции round можно сделать работу с большими массивами данных значительно проще. Она принимает в качестве аргументов число с плавающей точкой и разряд, до которого нужно осуществить округление. Второй аргумент является необязательным.

На практике, эта функция используется исключительно для отображения чисел. Ведь вычислительные мощности компьютера сейчас достаточные, чтобы выполнять сложные вычисления без предварительного округления. Более того, округлять числа для сложных вычислений ни в коем случае нельзя.

ОфисГуру
Adblock
detector