我一直在阅读Python中的除法和整数除法以及Python2与Python3之间的区别.在大多数情况下,这一切都是有道理的.仅当两个值都是整数时,Python 2才使用整数除法.Python 3总是执行真正的划分.Python 2.2+引入了//
整数除法运算符.
其他程序员提供的示例很好,很整洁,例如:
>>> 1.0 // 2.0 # floors result, returns float
0.0
>>> -1 // 2 # negatives are still floored
-1
Run Code Online (Sandbox Code Playgroud)
如何//
实施?为什么会发生以下情况:
>>> import math
>>> x = 0.5
>>> y = 0.1
>>> x / y
5.0
>>> math.floor(x/y)
5.0
>>> x // y
4.0
Run Code Online (Sandbox Code Playgroud)
不应该x // y = math.floor(x/y)
?这些结果是在python2.7上生成的,但由于x和y都是浮点数,因此python3 +上的结果应该相同.如果有一些浮点错误x/y
实际上4.999999999999999
并且math.floor(4.999999999999999) == 4.0
不会反映出来x/y
?
但是,以下类似情况不受影响:
>>> (.5*10) // (.1*10)
5.0
>>> .1 …
Run Code Online (Sandbox Code Playgroud)