% (остаток)
Оператор работает с двумя операндами: делимым и делителем.
Числовые операнды сначала приводятся к общему типу. Операнды могут быть числами с плавающей запятой.
Если второй операнд наверен 0 (нулю), возбуждается ZeroDivisionError
Начиная с +py2.3 оператор не поддерживается комплексными числами. В таких случаях, если применимо, следует получить сначала число с плавающей запятой при помощи функции abs().
Оператор всегда выдаёт результат с тем же знаком, какой имеет его второй операнд (либо нуль). При этом абсолютная величина результата строго меньше абсолютной величены второго операнда.
1 % 2 # 1
1.0 % 2 # 1.0
-1 % 2 # 1
-1 % -2 # -1
2 % 10 # 2
2 % 0 # ZeroDivisionError
На заметку
Похожие функции: divmod() и math.reminder() .
На заметку
Помимо того, что % возвращает остаток от деления для чисел, он же используется для форматирования строк.
Как узнать остаток при делении в питоне
Пусть у нас выполняется следующее выражение:
number = 3 + 4 * 5 ** 2 + 7 print(number) # 110
Здесь начале выполняется возведение в степень (5 ** 2) как операция с большим приоритетом, далее результат умножается на 4 (25 * 4), затем происходит сложение (3 + 100) и далее опять идет сложение (103 + 7).
Чтобы переопределить порядок операций, можно использовать скобки:
number = (3 + 4) * (5 ** 2 + 7) print(number) # 224
Следует отметить, что в арифметических операциях могут принимать участие как целые, так и дробные числа. Если в одной операции участвует целое число (int) и число с плавающей точкой (float), то целое число приводится к типу float.
Арифметические операции с присвоением
Ряд специальных операций позволяют использовать присвоить результат операции первому операнду:
- += Присвоение результата сложения
- -= Присвоение результата вычитания
- *= Присвоение результата умножения
- /= Присвоение результата от деления
- //= Присвоение результата целочисленного деления
- **= Присвоение степени числа
- %= Присвоение остатка от деления
number = 10 number += 5 print(number) # 15 number -= 3 print(number) # 12 number *= 4 print(number) # 48
Округление и функция round
При операциях с числами типа float надо учитывать, что результат операций с ними может быть не совсем точным. Например:
first_number = 2.0001 second_number = 5 third_number = first_number / second_number print(third_number) # 0.40002000000000004
В данном случае мы ожидаем получить число 0.40002, однако в конце через ряд нулей появляется еще какая-то четверка. Или еще одно выражение:
print(2.0001 + 0.1) # 2.1001000000000003
В случае выше для округления результата мы можем использовать встроенную функцию round() :
first_number = 2.0001 second_number = 0.1 third_number = first_number + second_number print(round(third_number)) # 2
В функцию round() передается число, которое надо округлить. Если в функцию передается одно число, как в примере выше, то оно округляется до целого.
Функция round() также может принимать второе число, которое указывает, сколько знаков после запятой должно содержать получаемое число:
first_number = 2.0001 second_number = 0.1 third_number = first_number + second_number print(round(third_number, 4)) # 2.1001
В данном случае число third_number округляется до 4 знаков после запятой.
Если в функцию передается только одно значение — только округляемое число, оно округляется то ближайшего целого
# округление до целого числа print(round(2.49)) # 2 - округление до ближайшего целого 2 print(round(2.51)) # 3
Однако если округляемая часть равна одинаково удалена от двух целых чисел, то округление идет к ближайшему четному:
print(round(2.5)) # 2 - ближайшее четное print(round(3.5)) # 4 - ближайшее четное
Округление производится до ближайшего кратного 10 в степени минус округляемая часть:
# округление до двух знаков после запятой print(round(2.554, 2)) # 2.55 print(round(2.5551, 2)) # 2.56 print(round(2.554999, 2)) # 2.55 print(round(2.499, 2)) # 2.5
Однако следует учитывать, что функция round() не идеальный инструмент. Например, выше при округление до целых чисел применяется правило, согласно которому, если округляемая часть одинаково удалена от двух значений, то округление производится до ближайшего четного значения. В Python в связи с тем, что десятичная часть числа не может быть точно представлена в виде числа float, то это может приводить к некоторым не совсем ожидаемым результатам. Например:
# округление до двух знаков после запятой print(round(2.545, 2)) # 2.54 print(round(2.555, 2)) # 2.56 - округление до четного print(round(2.565, 2)) # 2.56 print(round(2.575, 2)) # 2.58 print(round(2.655, 2)) # 2.65 - округление не до четного print(round(2.665, 2)) # 2.67 print(round(2.675, 2)) # 2.67
Подобно о проблеме можно почитать к документации.
Метод remainder модуля math
Метод remainder модуля math возвращает остаток от деления одного числа на второе. В первом параметре метода указываем число, которое нужно разделить (делимое), во втором параметре — число, на которое делим первое (делитель). В отличие от оператора % метод всегда возвращает вещественное значение.
Синтаксис
import math math.remainder(делимое, делитель)
Пример
Давайте найдем остаток от деления числа 25 на 5 :
import math print(math.remainder(25, 5))
Результат выполнения кода:
Пример
А теперь давайте получим остаток от деления 30 на 4 :
import math print(math.remainder(30, 4))
Результат выполнения кода:
Пример
Давайте узнаем остаток от деления чисел 10 и 3 :
import math print(math.remainder(10, 3))
Результат выполнения кода:
Пример
А теперь давайте попробуем узнать остаток от деления чисел 10 на 0 :
import math print(math.remainder(10, 0))
После выполнения кода функция вернет нам ошибку:
Traceback (most recent call last): File «C:\python\file.py», line 3, in
Смотрите также
- метод fmod модуля math ,
который возвращает остаток от деления чисел с плавающей точкой - метод modf модуля math ,
который возвращает дробную и целую часть числа - функция divmod ,
которая возвращает кортеж из частного и остатка при делении
Программирование в «Эврике»
Нахождение частного и остатка при делении в Питоне.
1. Целочисленное частное и остаток
// Целочисленное частное от деления левого операнда на правый (то есть результатом вычисления выражения 21 // 5 будет 4).
% Остаток от деления левого операнда на правый (то есть результатом вычисления выражения 21 % 5 будет 1).
Операция деления с округлением вниз (X // Y) всегда усекает дробную часть.
Оглавление
- 1. Целочисленное частное и остаток
Вы используете гостевой доступ (Вход)
Эта страница: General type: incourse. Context Книга: Нахождение частного и остатка при делении в Питоне. (context id 109645). Page type mod-book-view.
