Программа округления чисел python

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

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

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

Затем мы поговорим о методах math.ceil() и math.floor() , которые округляют изначальное число в большую и меньшую сторону до ближайшего целого числа. Эти два метода входят во встроенный математический модуль math в Python.

Как округлить число при помощи метода round()

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

Функция round() принимает два аргумента. Её синтаксис выглядит следующим образом:

Первый параметр — number (число) — это исходное число с дробной частью, которое мы хотим округлить.

Второй параметр — decimal_digits — это количество возвращаемых десятичных знаков. Значение по умолчанию — 0.

Давайте рассмотрим пару примеров.

В нашем первом примере мы используем только один параметр — округляемое число number, равное 2,56789.

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

Вот как легко работает данный метод!

Теперь давайте посмотрим, как работает второй параметр.

x = 2.56789 print(round(x, 2)) # 2.57

В этом коде мы добавили в функцию round() второй параметр. А именно — передали значение 2 в качестве параметра decimal_digits . В результате наша функция округлит число до сотых (два знака после запятой).

В выводе мы получим 2,57: исходное число 2,56789 округляется до двух знаков после запятой и получается 2,57.

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

x = 2.56789 print(round(x, 3)) # 2.568

Теперь мы передали в качестве второго параметра число 3 ( decimal_digits = 3 ). В результате получим число, округленное до тысячных (три знака после запятой).

Первоначальное число 2,56789 было округлено до 2,568.

Вот и всё! Просто, не правда ли?

Читайте также:  Vertical text centering html

Простой метод math.ceil() позволяет округлить число до целого в большую сторону. Метод принимает только один аргумент — округляемое число. Синтаксис выглядит следующим образом:

К примеру, мы можем использовать ceil() вот так:

import math x = 5.57468465 print(math.ceil(x)) # 6

Скорее всего, вы заметили, что в приведенном выше коде мы сначала импортировали математический модуль с помощью команды import math . Это дает нам доступ ко всем методам, предоставляемым данным модулем.

Далее мы создали переменную x и присвоили ей значение 5,57468465.

Чтобы округлить исходное число х до ближайшего целого числа, мы передали его методу math.ceil() .

Результирующее значение этой операции, как видно из приведенного выше кода, равно 6.

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

Как округлить число до ближайшего целого при помощи метода math.floor()

Метод floor() в некотором смысле обратный методу ceil() : он тоже округляет число до целого, но в меньшую сторону.

Как и в предыдущем примере, чтобы использовать метод math.floor() , мы должны сначала импортировать математический модуль с помощью команды import math .

Вот так выглядит синтаксис метода math.floor() :

Данный метод точно так же принимает лишь один аргумент — исходное число, которое нужно округлить. Однако floor() округляет до целого числа в меньшую сторону. Давайте рассмотрим следующий пример:

import math x = 5.57468465 print(math.floor(x)) # 5

Мы передали методу math.floor() переменную x , в которой хранится число 5,57468465. В результате это число было округлено до 5.

Заключение

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

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

Следующий метод — math.ceil() — округляет число до ближайшего целого числа в большую сторону. Третий метод — math.floor() — тоже округляет число до ближайшего целого, но уже в меньшую сторону. Эти два метода доступны при работе с математическим модулем math . Документацию по модулю math можете посмотреть здесь.

Надеемся данная статья была вам полезна! Успехов в написании кода!

Источник

Округление чисел

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

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

Способы округления чисел

Для округления чисел придумано много способов, они не лишены недостатков, однако часто используются для решения задач. Разберёмся в тонкостях каждого из них.

Если используется стандартная библиотека math, то в начале кода её необходимо подключить. Сделать это можно, например, с помощью инструкции: import math .

Читайте также:  Сделать римские цифры html

math.ceil() — округление чисел в большую сторону

Функция получила своё имя от термина «ceiling», который используется в математике для описания числа, которое больше или равно заданному.

Любая дробь находится в целочисленном интервале, например, 1.2 лежит между 1 и 2. Функция ceil() определяет, какая из границ интервала наибольшая и записывает её в результат округления.

math.ceil(5.15) # = 6 math.ceil(6.666) # = 7 math.ceil(5) # = 5

Важно помнить, что функция определяет наибольшее число с учётом знака. То есть результатом округления числа -0.9 будет 0, а не -1.

math.floor() — округление чисел в меньшую сторону

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

math.floor(7.9) # = 7 math.floor(9.999) # = 9 math.floor(-6.1) # = -7

math.trunc() — отбрасывание дробной части

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

math.trunc(5.51) # = 5 math.trunc(-6.99) # = -6

Избавиться от дробной части можно с помощью обычного преобразования числа к типу int. Такой способ полностью эквивалентен использованию trunc() .

Нормальное округление

Python позволяет реализовать нормальное арифметическое округление, использовав функцию преобразования к типу int.

И хотя int() работает по другому алгоритму, результат её использования для положительных чисел полностью аналогичен выводу функции floor(), которая округляет числа «вниз». Для отрицательных аналогичен функции ceil().

math.floor(9.999) # = 9 int(9.999) # = 9 math.ceil(-9.999) # = -9 int(-9.999) # = -9

Чтобы с помощью функции int() округлить число по математическим правилам, необходимо добавить к нему 0.5, если оно положительное, и -0.5, если оно отрицательное.

Тогда операция принимает такой вид: int(num + (0.5 if num > 0 else -0.5)). Чтобы каждый раз не писать условие, удобно сделать отдельную функцию:

def int_r(num): num = int(num + (0.5 if num > 0 else -0.5)) return num

Функция работает также, как стандартная функция округление во второй версии Python (арифметическое округление).

int_r(11.5) # = 12 int_r(11.4) # = 11 int_r(-0.991) # = -1 int_r(1.391) # = 1

round() — округление чисел

round() — стандартная функция округления в языке Python. Она не всегда работает так, как ожидается, а её алгоритм различается в разных версиях Python.

В Python 2

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

Увеличение погрешности вызвано неравным количеством цифр, определяющих, в какую сторону округлять. Всего 4 цифры на конце приводят к округлению «вниз», и 5 цифр к округлению «вверх».

Помимо этого, могут быть неточности, например, если округлить число 2.675 до второго знака, получится число 2.67 вместо 2.68. Это происходит из-за невозможности точно представить десятичные числа типа «float» в двоичном коде.

В Python 3

В третьей версии Python используется банковское округление. Это значит, что округление происходит до самого близкого чётного.

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

round(3.5) # = 4 round(9.5) # = 10 round(6.5) # = 6 round(-6.5) # = -6 round(-7.5) # = -8

Но если вам по каким то причинам нужно округление как в Python 2, то можно воспользоваться функцией написанной нами выше на основе приведения к целому числу.

Читайте также:  Center an Image using text align center

Округление до сотых

У функции raund() есть ещё один аргумент. Он показывает до какого количества знаков после запятой следует округлять. Таким образом, если нам надо в Python округлить до сотых, этому параметру следует задать значение 2.

Пример округления до нужного знака:

round(3.555, 2) # = 3.56 round(9.515,1) # = 9.5 round(6.657,2) # = 6.66

Ошибки округления и модуль decimal

При округлении функцией round(), можно получить следующее:

round(2.65, 1) # = 2.6 round(2.85, 1) # = 2.9

Почему в одном случае округляется вниз, а в другом вверх? При переводе 2.85 в двоичную систему получается число, которое немного больше. Поэтому функция видит не «5», а «>5» и округляет вверх.

Проблему неточного представления чисел отлично иллюстрирует пример:

print (0.1 + 0.1 + 0.1) 0.30000000000000004

Из-за подобных ошибок числа типа «float» нельзя использовать там, где изменения значения на одну тысячную может привести к неверному результату. Решить данную проблему поможет модуль decimal.

decimal — модуль, позволяющий округлять десятичные дроби с почти 100% точностью. Его основной принцип: компьютер должен считать так, как считает человек. Речь идёт не о скорости вычисления, а о точности и отсутствии проблем неправильного представления чисел.

Источник

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(), можно получить следующее:

Источник

Оцените статью