为了丰富学员们的课外知识,老师让我们助理分享这套Python系列教程。由于Python教程并非老师所写,所以不如老师的AI教学风趣幽默,望大家见谅!想要学习AI技术的新朋友可以去www.captainbed.net。本公众号由助理负责运营,只免费分享课外知识,不回复任何私信。PS:看不懂本篇文章的同学请从前面的文章看起,循序渐进每天学一点就不会觉得难了!
//操作符通常叫做截断除法,但是,更准确的说法是floor除法,它把结果向下截断到它的下层,即真正结果之下的最近的整数。其直接效果是向下舍入,并不是严格地截断,并且这对负数也有效。你可以使用Python的math模块来自己查看其中的区别:
>>> import math
>>> math.floor(2.5)
2
>>> math.floor(-2.5)
-3
>>> math.trunc(2.5)
2
>>> math.trunc(-2.5)
-2
对于正数来说,截断除法和floor除法是相同的;对于负数,截断除法和floor除法是不同的。下面是在Python 3.0中的情况:
C:\misc> c:\python30\python
>>> 5 / 2,5 / -2
(2.5,-2.5)
>>> 5 // 2,5 // -2 # Truncates to floor: rounds to first lower integer
(2,-3) # 2.5 becomes 2,-2.5 becomes -3
>>> 5 / 2.0,5 / -2.0
(2.5,-2.5)
>>> 5 // 2.0,5 // -2.0 # Ditto for floats,though result is float too
(2.0,-3.0)
Python 2.6中的情况类似,但是/的结果有所不同(无法理解这个知识点的同学请看前一篇文章):
C:\misc> c:\python26\python
>>> 5 / 2,5 / -2 # Differs in 3.0
(2,-3)
>>> 5 // 2,5 // -2 # This and the rest are the same in 2.6 and 3.0
(2,-3)
>>> 5 / 2.0,5 / -2.0
(2.5,-2.5)
>>> 5 // 2.0,5 // -2.0
(2.0,-3.0)
如果你真的想要截断而不管符号,可以总是通过math.trunc来得到一个浮点除法结果,而不管是什么Python版本:
C:\misc> c:\python30\python
>>> import math
>>> 5 / -2 # Keep remainder
-2.5
>>> 5 // -2 # Floor below result
-3
>>> math.trunc(5 / -2) # Truncate instead of floor
-2
C:\misc> c:\python26\python
>>> import math
>>> 5 / float(-2) # Remainder in 2.6
-2.5
>>> 5 / -2,5 // -2 # Floor in 2.6
(-3,-3)
>>> math.trunc(5 / float(-2)) # Truncate in 2.6
-2