python系列教程60

305 阅读2分钟

朋友们,如需转载请标明出处:blog.csdn.net/jiangjunsho…

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

//操作符通常叫做截断除法,但是,更准确的说法是floor除法,它把结果向下截断到它的下层,即真正结果之下的最近的整数。其直接效果是向下舍入,并不是严格地截断,并且这对负数也有效。你可以使用Python的math模块来自己查看其中的区别:

>>> import math

>>> math.floor2.52

>>> math.floor-2.5-3

>>> math.trunc(2.52

>>> math.trunc(-2.5-2

对于正数来说,截断除法和floor除法是相同的;对于负数,截断除法和floor除法是不同的。下面是在Python 3.0中的情况:

C:\misc> c:\python30\python

>>> 5 / 2,5 / -22.5,-2.5>>> 5 // 2,5 // -2       # Truncates to floor: rounds to first lower integer2,-3# 2.5 becomes 2,-2.5 becomes -3

>>> 5 / 2.0,5 / -2.02.5,-2.5>>> 5 // 2.0,5 // -2.0   # Ditto for floats,though result is float too2.0,-3.0

Python 2.6中的情况类似,但是/的结果有所不同(无法理解这个知识点的同学请看前一篇文章):

C:\misc> c:\python26\python

>>> 5 / 2,5 / -2    # Differs in 3.02,-3>>> 5 // 2,5 // -2  # This and the rest are the same in 2.6 and 3.02,-3>>> 5 / 2.0,5 / -2.02.5,-2.5>>> 5 // 2.0,5 // -2.02.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