Отдел в Python 2.7. и 3,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, /
- 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