Арифметические операторы: целочисленное деление
Знак //
(двойная косая черта) является оператором целочисленного деления. Он отличается от стандартного оператора /
двумя деталями:
- в его результате отсутствует дробная часть - он отсутствует (для целых чисел) или всегда равен нулю (для чисел с плавающей запятой); это означает, что результаты всегда округляются;
- он соблюдает правило целых и "плавающих" чисел.
Запустите приведенный ниже пример и посмотрите результаты:
print(6 // 3)
print(6 // 3.)
print(6. // 3)
print(6. // 3.)
Как видите, целочисленное деление на целое число дает целочисленный результат. Все остальные случаи производят "плавающие" числа.
Давайте сделаем несколько более сложных тестов.
Посмотрите на следующий фрагмент:
print(6 // 4)
print(6. // 4)
Представьте, что мы использовали /
вместо //
- можете ли вы предсказать результаты?
Да, это будет 1.5
в обоих случаях. Это понятно.
Но каких результатов деления мы должны ожидать при использовании //
?
Запустите код и убедитесь сами.
Мы получаем два - одно целое и одно с плавающей точкой.
Результат целочисленного деления всегда округляется до ближайшего целочисленного значения, которое меньше реального (не округленного) результата.
Это очень важно: округление всегда идет к меньшему целому числу.
Посмотрите на приведенный ниже код и попробуйте спрогнозировать результаты еще раз:
print(-6 // 4)
print(6. // -4)
Примечание: некоторые значения являются отрицательными. Это явно повлияет на результат. Но как?
Результат - две отрицательные пары. Реальный (не округленный) результат равен -1.5
в обоих случаях. Тем не менее, результаты являются предметами округления. Округление до меньшего целочисленного значения, а меньшее целочисленное значение равно -2
,следовательно: -2
и -2.0
.
ПРИМЕЧАНИЕ
Целочисленное деление также можно назвать нижним делением. Вы обязательно встретите этот термин в будущем.