🐍 Укус питона 🐍
2.58K subscribers
990 photos
22 videos
285 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Модуль decimal

При работе с числами с плавающей точкой (то есть float) мы сталкиваемся с тем, что в результате вычислений мы получаем не совсем верный результат, смотрим код:

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

Ключевым компонентом для работы с числами в этом модуле является класс Decimal. Для его применения нам надо создать его объект с помощью конструктора. В конструктор передается строковое значение, которое представляет число, вторая часть:

После этого объект Decimal можно использовать в арифметических операциях, последняя часть кода:

🐍 Укус питона // 💬 Чат // #теория #модули #decimal
Модуль decimal. Продолжение.

В операциях с Decimal можно использовать целые числа, смотрим код:

Однако нельзя смешивать в операциях дробные числа float и Decimal, вторая часть кода:

С помощью дополнительных знаков мы можем определить, сколько будет символов в дробной части числа, последняя часть кода:

Строка "0.10" определяет два знака в дробной части, даже если последние символы будут представлять ноль. Соответственно "0.100" представляет три знака в дробной части.

🐍 Укус питона // 💬 Чат // #теория #модули #decimal
Округление чисел

Объекты Decimal имеют метод quantize(), который позволяет округлять числа. В этот метод в качестве первого аргумента передается также объект Decimal, который указывает формат округления числа:

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

🐍 Укус питона // 💬 Чат // #теория #модули #decimal #quantize
Округление чисел. Продолжение.

По умолчанию округление описывается константой ROUND_HALF_EVEN, при котором округление происходит до ближайшего четного числа, если округляемая часть равна 5. Например:

Стратегия округления передается в качестве второго параметра в quantize.

Строка "1.00" означает, что округление будет идти до двух чисел в дробной части. Но в первом случае "10.025" - вторым знаком идет 2 - четное число, поэтому, несмотря на то, что следующее число 5, двойка не округляется до тройки.

Во втором случае "10.035" - вторым знаком идет 3 - нечетное число, ближайшим четным числом будет 4, поэтому 35 округляется до 40.

🐍 Укус питона // 💬 Чат // #теория #модули #decimal #quantize
Округление чисел. Продолжение.

Данное поведение при округлении, возможно, не всем покажется желательным, и в этом случае его можно переопределить, использовав одну из следующих констант:

• ROUND_HALF_UP: округляет число в сторону повышения, если после него идет число 5 или выше

• ROUND_HALF_DOWN: округляет число в сторону повышения, если после него идет число больше 5, смотрим пример:

• ROUND_05UP: округляет 0 до единицы, если после него идет число 5 и выше, второй пример:

• ROUND_CEILING: округляет число в большую сторону вне зависимости от того, какое число идет после него, третий пример:

• ROUND_FLOOR: не округляет число вне зависимости от того, какое число идет после него, последний пример:

🐍 Укус питона // 💬 Чат // #теория #модули #decimal #quantize