小编J.M*_*ney的帖子

为什么math.floor(x/y)!= x // y用于Python中两个可分割的浮点数?

我一直在阅读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)

python division integer-division

23
推荐指数
2
解决办法
1213
查看次数

标签 统计

division ×1

integer-division ×1

python ×1