在Python 2中,用于分割时,“/”和“//”有什么区别?
使用另一个有什么好处? 在Python 2中,它们似乎都返回相同的结果:
>>> 6/3 2 >>> 6//3 2
在Python 3.0中, 5 / 2
将返回2.5
和5 // 2
将返回2
。 前者是浮点除法,后者是地板除法,有时也称为整数除法。
在Python 2.2或更高版本的2.x行中,除非您执行from __future__ import division
,导致Python 2.x采用3.0的行为,否则整数没有区别
不pipe将来导入, 5.0 // 2
将返回2.0
因为这是操作的分区结果。
您可以在https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operatorfind详细的说明;
它有助于澄清Python 2.x行,既不是地板划分也不是真正的划分。 目前接受的答案并不清楚。 /
当两个参数都是整数时是分区划分,但是当两个参数中的任一个或两个都是浮动时是真分区。
以上讲述了更多的事实,比接受的答案中的第二段更加清楚。
大家已经回答了//
是地板师。
为什么这一点很重要呢, //
在2.2版本的所有Python版本(包括Python 3.x版本)中都是明确的地板划分。
/
的行为可能会改变,具体取决于:
- 主动
__future__
导入或不(模块本地) - Python命令行选项,可以是
-Q old
或-Q new
//
实现“楼层划分”,无论你的types如何。 所以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.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中,Floor Division之间没有区别
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
>>> print 5.0 / 2 2.5 >>> print 5.0 // 2 2.0
请参阅Integer Division的问题,以了解引入//
运算符进行整数除法的原因。
**
- Python 2.7和其他即将发布的Python版本:
** /除以右手操作数ex :: 4/2 = 2划分左手操作数
Floor Division(//) – 操作数的除法,其结果是小数点后数字被删除的商。 但是,如果其中一个操作数是负的,结果就是floored,也就是说从零(向负无穷大)舍去:例如:9 // 2 = 4和9.0 // 2.0 = 4.0,-11 // 3 = -4 ,-11.0 // 3 = -4.0
分部和/或地板分部操作员都以相似的方式操作
双斜杠//
是地板分区:
>>> 7//3 2
等式的答案四舍五入到下一个较小的整数或以.0作为小数点的浮点数。
>>>print 5//2 2 >>> print 5.0//2 2.0 >>>print 5//2.0 2.0 >>>print 5.0//2.0 2.0
//
是楼层划分,它总会给你结果的整数层。 另一个是“正规”部门。