在Python 2中,用于分割时,“/”和“//”有什么区别?

使用另一个有什么好处? 在Python 2中,它们似乎都返回相同的结果:

>>> 6/3 2 >>> 6//3 2 

在Python 3.0中, 5 / 2将返回2.55 // 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//21.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的问题,以了解引入//运算符进行整数除法的原因。

**

  1. 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 

//是楼层划分,它总会给你结果的整数层。 另一个是“正规”部门。