Подтвердить что ты не робот

Отдел в Python 2.7. и 3,3

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

Я не понимаю, почему есть разница:

в Python 3:

>>> 20/15
1.3333333333333333

в Python 2:

>>> 20/15
1

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

4b9b3361

Ответ 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, / - float division

В Python 2 / - целочисленное деление (при условии ввода int)

В обоих случаях 2 и 3, // является целым делением

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

Ответ 3

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

20. / 15
20 / float(15)

Ответ 4

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

float(20)/15 #1.33333333