朋友们,如需转载请标明出处:blog.csdn.net/jiangjunsho…
声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!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