2.3.1.4 Целочисленное деление - без остатка
integer division
Знак // (двойная косая черта) - это целочисленный оператор деления. Он отличается от стандартного / оператора двумя деталями:
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
ПРИМЕЧАНИЕ
Целочисленное деление также можно назвать этажным делением. Вы обязательно встретите этот термин в будущем.
Знак // (двойная косая черта) - это целочисленный оператор деления. Он отличается от стандартного / оператора двумя деталями:
- в его результате отсутствует дробная часть - она отсутствует (для целых чисел) или всегда равна нулю (для чисел с плавающей запятой); это означает, что результаты всегда округляются;
- он соответствует правилу целочисленного и плавающего.
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
ПРИМЕЧАНИЕ
Целочисленное деление также можно назвать этажным делением. Вы обязательно встретите этот термин в будущем.