Операторы производят определенные действия с данными. Например, математические операторы выполняют арифметические вычисления, двоичные операторы - производят манипуляции с отдельными битами данных и т.д. Числа - немаловажный элемент любой компьютерной программы. Можно сказать, что ни одна мало-мальски полезная программа не обходится без применения чисел. Как и в любом другом языке программирования (ну, почти в любом), в Python имеются следующие базовые математические операторы: Оператор – Действие + - Сложение - - Вычитание * - Умножение / - Обычное деление // - Деление с остатком % - Остаток от деления ** - Возведение в степень Результатом оператора/ всегда является вещественное число, даже если вы делите два целых числа и нет остатка. Вам кажется, что так и должно быть? В принципе да, в Python 3 так и есть. А вот в Python 2 при делении двух целых чисел возвращалось целое число, а остаток просто отбрасывался. В Python 3 оператор деления работает, как обычно. Теперь рассмотрим примеры использования математических операторов. Обязательно обратите внимание на используемый тип данных операндов и тип данных возвращаемого результата: >>> 2 + 2 # Два целых числа, результат - целое число 4 >» 2.5 + 2 # Два целых числа, результат - целое число 1 Одно целое, одно вещественное, результат - вещественное 4.5 >>> 2.5 + 2.5 1 Два вещественных, результат – вещественное 5.0 >>> 100 – 20 80 >>> 100.5 - 80.5 20.0 >>> 5 * 5 25 >>> 5.25 * 5.25 27. 5625 >>> 5 * 2.5 12.5 # Обратите внимание на разницу между операторами / и // >>> 100 / 20 5.0 >>> 100 / 33 3.0303030303030303 >>> 100 // 5 20 >>> 100 // 33 3 >>> 100 % 33 1 >>> 2 * 2 4 >>> +100, -20, -5.0 (100, -20, -5.0) >>> При выполнении операций над вещественными числами нужно учитывать точность вычислений, иначе вы можете получить довольно неожиданные результаты. Например: >>> 0.5 - 0.1 - 0.1 - 0.1 0.20000000000000004 >>> 0.5 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1 2.7755575615628914е-17 В первом случае результат вполне предсказуем - мы получили 0.2. А вот во втором случае мы ожидали О, а получили значение, отличное от нуля. Поэтому если вы разрабатываете финансовые приложения на Python, где важна точность, лучше использовать модуль Decimal: >>> from decimal import Decimal >>> Decimal("0.5") - Decimal("0.l") - Decimal("0.l") - Decimal("0.l") - Decimal("0.l") - Decimal("0.l") Decimal ('0.0')
Будни питониста
:Олег Петухов
Математические операторы.
Операторы производят определенные действия с данными. Например, математические операторы выполняют арифметические вычисления, двоичные операторы - производят манипуляции с отдельными битами данных и т.д.
Числа - немаловажный элемент любой компьютерной программы. Можно сказать, что ни одна мало-мальски полезная программа не обходится без применения чисел.
Как и в любом другом языке программирования (ну, почти в любом), в Python имеются следующие базовые математические операторы:
Оператор – Действие
+ - Сложение
- - Вычитание
* - Умножение
/ - Обычное деление
// - Деление с остатком
% - Остаток от деления
** - Возведение в степень
Результатом оператора/ всегда является вещественное число, даже если вы делите два целых числа и нет остатка. Вам кажется, что так и должно быть? В принципе да, в Python 3 так и есть. А вот в Python 2 при делении двух целых чисел возвращалось целое число, а остаток просто отбрасывался. В Python 3 оператор деления работает, как обычно.
Теперь рассмотрим примеры использования математических операторов. Обязательно обратите внимание на используемый тип данных операндов и тип данных возвращаемого результата:
>>> 2 + 2 # Два целых числа, результат - целое число
4
>» 2.5 + 2 # Два целых числа, результат - целое число 1 Одно целое, одно вещественное, результат - вещественное
4.5
>>> 2.5 + 2.5 1 Два вещественных, результат – вещественное
5.0
>>> 100 – 20
80
>>> 100.5 - 80.5
20.0
>>> 5 * 5
25
>>> 5.25 * 5.25
27. 5625
>>> 5 * 2.5
12.5
# Обратите внимание на разницу между операторами / и //
>>> 100 / 20
5.0
>>> 100 / 33
3.0303030303030303
>>> 100 // 5
20
>>> 100 // 33
3
>>> 100 % 33
1
>>> 2 * 2
4
>>> +100, -20, -5.0
(100, -20, -5.0)
>>>
При выполнении операций над вещественными числами нужно учитывать точность вычислений, иначе вы можете получить довольно неожиданные результаты. Например:
>>> 0.5 - 0.1 - 0.1 - 0.1
0.20000000000000004
>>> 0.5 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1
2.7755575615628914е-17
В первом случае результат вполне предсказуем - мы получили 0.2. А вот во втором случае мы ожидали О, а получили значение, отличное от нуля.
Поэтому если вы разрабатываете финансовые приложения на Python, где важна точность, лучше использовать модуль Decimal:
>>> from decimal import Decimal
>>> Decimal("0.5") - Decimal("0.l") - Decimal("0.l") - Decimal("0.l") - Decimal("0.l") - Decimal("0.l") Decimal ('0.0')