Python Division: что такое операторы деления в Python 3

Деление — это стандартная математическая операция любого языка программирования, и Python не исключение. В Python 2 существует только один вид деления, называемый целочисленным делением.

В общем, определение деления (/) в Python зависело исключительно от аргументов. Например, в Python 2.7 разделение 11/4 было 2, потому что оба аргумента были целыми числами.

Однако 20.0/7 будет генерировать 2,857142857142857 в качестве выходных данных, поскольку аргументы были числами с плавающей запятой.

Приведенное выше определение ‘/’ часто вызывало проблемы для приложений, в которых использовались типы данных, которых автор не ожидал.

Python Division

В Python 3 есть два вида деления.

  1. Целочисленное деление (//)
  2. Деление с плавающей запятой (/)

Стандартный символ деления (/) работает по-разному в Python 3 и Python 2, когда применяется к целым числам.

При делении целого числа на другое в Python 3 операция деления x/y представляет истинное деление (используется __ truediv __ метод) и выдает результат с плавающей запятой.

Между тем, та же операция в Python 2 представляет собой классическое деление, округляющее результат до отрицательной бесконечности (также известное как получение права голоса).

Деление с плавающей запятой в Python

Python 3 предоставляет оператор ‘/’ , который выполняет деление с плавающей запятой для аргументов int и float.

 print (42/2) 

Вывод

 21.0 

Вы можете видеть, что вывод находится в формате с плавающей запятой. Во времена Python 2, когда вы делили одно целое число на другое, независимо от того, что, результатом всегда будет целое число.

Теперь давайте посмотрим на следующий код.

 print (41/2) 

Вывод

 20,5 

Теперь, мы разделили 2 на нечетное число, поэтому получили значение с плавающей запятой.

Python 2 деление

В Python 2.2 или новее, в строке 2.x нет разницы для целых чисел, если вы не выполните from __ future__ import деление , в результате чего Python 2.x принимает поведение 3.x .

Для пояснения для строка Python 2.x ,/не является ни разделением полов , ни истинным разделением . В настоящее время принятый ответ по этому поводу не ясен. /- это деление на пол, когда оба аргумента являются int, но истинное деление, когда один или оба аргумента имеют значение float .

 from operator import truediv, floordivprint (  truediv (10, 8) == 1. 25) # эквивалентно `/` в Python 3print (floordiv (10, 8) == 1) 

Output

  TrueTrue 

Целочисленное деление в Python

Поскольку Python не объявляет типы данных заранее, вы никогда не знаете, когда вы хотите используйте целые числа и когда хотите использовать float. Поскольку числа с плавающей запятой теряют точность, не рекомендуется использовать их в интегральных вычислениях.

Чтобы решить эту проблему, будущие модули Python включали новый тип деления, называемый целочисленным делением, задаваемым этажом. оператор деления (//).

Теперь / выполняет деление с плавающей запятой, а // выполняет целочисленное деление .

В Python 3 вы можете выполнять целочисленное деление с помощью оператора (//).

 print (42//2) 

Вывод

 21 

Вы можете видеть, что возвращаемое значение является целым числом и не float .

Теперь давайте разделим нечетное значение на 2 и посмотрим на результат.

 print (41//2)  

 20 

Здесь вы можете видеть, что оно округляется до 20. Деление с плавающей запятой округляется до ближайшего целого числа.

Деление с отрицательными значениями

Некоторые другие языки программирования используют округление до нуля ( усечение), а не округление в сторону отрицательной бесконечности, как это делает Python (т.е. в этих языках -3/2 == -1). Такое поведение может вызвать путаницу при переносе или сравнении кода.

 print (-3//2) 

Вывод

 -2 

Если мы попробуем деление с плавающей запятой, вы увидите другие результаты.

 print (-3/2) 

Вывод

 -1,5 

Заключение

Если вам нужно число с плавающей запятой в результате деления, вы можете использовать деление с плавающей запятой (/), или, если вы хотите деление на основе целых чисел, вы можете используйте оператор (//) в Python. Вы должны позаботиться о преобразовании типов данных в длинной программе, чтобы избежать ошибок или неожиданного поведения.

См. Также

Python floor ()

Python ceil ()

Python sum ()

Python square ()

Python sqrt ()

Оцените статью
nanomode.ru
Добавить комментарий