В Python 2, в чем разница между '/' и '//' при использовании для разделения?
есть ли преимущество использования одного над другим? В Python 2 они оба, похоже, возвращают одни и те же результаты:
>>> 6/3
2
>>> 6//3
2
10 ответов
В Python 3.0 5 / 2
вернутся 2.5
и 5 // 2
вернутся 2
. Первое-это деление с плавающей запятой, а второе-деление пола, иногда также называемое целочисленным делением.
в Python 2.2 или более поздней версии в 2.линия х, нет никакой разницы для целых чисел, если вы не выполните from __future__ import division
, что вызывает Python 2.x принять поведение 3.0
независимо от будущего импорта,5.0 // 2
вернутся 2.0
так как это разделение пола результат операции.
вы можете найти подробное описание на https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
это помогает уточнить для Python 2.x линия,/
не является ни разделением пола, ни истинным разделением. Ток ответа не ясно. /
разделение пола, когда оба args являются int, но является истинным разделением, когда либо или оба args являются float.
вышесказанное говорит намного больше правды и намного яснее, чем 2-й абзац в принятом ответе.
//
реализует "разделение пола", независимо от вашего типа. Так
1.0/2.0
даст 0.5
, а как 1/2
, 1//2
и 1.0//2.0
даст 0
.
см.https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator для деталей
как все уже ответили,//
разделение этаж.
почему это важно, что //
однозначно разделение пола во всех версиях Python от 2.2, включая Python 3.X версий.
поведение /
может меняться в зависимости от:
- активный
__future__
импорт или нет (модуль-местные) - опция командной строки Python, либо
-Q old
или-Q new
/ --> деление с плавающей запятой
// --> этаж отдел
давайте посмотрим некоторые примеры как в python 2.7, так и в Python 3.5.
Python 2.7.10 против Python 3.5
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10 против Python 3.5
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
теперь, если вы хотите иметь (в python 2.7) тот же вывод, что и в python 3.5, вы можете сделать следующее:
Python 2.7.10
from __future__ import division
print (2/3) ----> 0.6666666666666666 #Python 2.7
print (4/2) ----> 2.0 #Python 2.7
где как нет разницы между разделением пола как в python 2.7, так и в Python 3.5
138.93//3 ---> 46.0 #Python 2.7
138.93//3 ---> 46.0 #Python 3.5
4//3 ---> 1 #Python 2.7
4//3 ---> 1 #Python 3.5
**
- Python 2.7 и другая предстоящая версия python:
** / Division Делит левый операнд на правый операнд бывший:: 4 / 2 = 2
Floor Division (//) - деление операндов, где результатом является фактор, в котором удаляются цифры после десятичной точки. Но если один из операндов отрицательный, то результат округляется от нуля (в сторону отрицательной бесконечности): образцы: 9//2 = 4 и 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0
оба оператора / Division и / / floor division работают аналогичным образом
ответ уравнения округляется до следующего меньшего целого числа или float with .0 как десятичная точка.
>>>print 5//2
2
>>> print 5.0//2
2.0
>>>print 5//2.0
2.0
>>>print 5.0//2.0
2.0
//
Это деление пола, оно всегда будет давать вам целочисленный пол результата. Другой - "регулярное" подразделение.