Вопрос-Ответ

Integer division in Python 2 and Python 3

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

Как я могу разделить два числа в Python 2.7 и получить результат с десятичными дробями?

Я не понимаю, в чем разница:

в Python 3:

>>> 20/15
1.3333333333333333

в Python 2:

>>> 20/15
1

Разве это не по модулю на самом деле?

Переведено автоматически
Ответ 1

В Python 2.7 оператор / является целочисленным делением, если входные данные являются целыми числами.

Если вам нужно деление с плавающей точкой (что я всегда предпочитаю), просто используйте этот специальный импорт:

from __future__ import division

Смотрите это здесь:

>>> 7 / 2
3
>>> from __future__ import division
>>> 7 / 2
3.5
>>>

Целочисленное деление достигается с помощью //, а по модулю - с помощью %:

>>> 7 % 2
1
>>> 7 // 2
3
>>>

Как прокомментировал user2357112, этот импорт должен быть выполнен перед любым другим обычным импортом.

Ответ 2

В Python 3, / это деление с плавающей точкой

В Python 2, / это целочисленное деление (при условии, что int входные данные)

Как в 2, так и в 3, // является целочисленным делением

(Для получения деления с плавающей точкой в Python 2 требуется, чтобы любой из операндов был с плавающей точкой, либо как 20. или float(20))

Ответ 3

В Python 2.x убедитесь, что у вас есть хотя бы один операнд вашего деления в float. Этого можно добиться несколькими способами, приведенными в следующих примерах:

20. / 15
20 / float(15)
Ответ 4

"/" - это целочисленное деление в Python 2, поэтому оно будет округлено до целого числа. Если вы хотите, чтобы возвращалось десятичное число, просто измените тип одного из входных данных на float:

float(20)/15 #1.33333333

python python-3.x python-2.7