There是内置函数divmod()
的令人困惑的描述,我在下面发帖:
根据身份如果x非常接近y的精确整数倍,则由于四舍五入,x // y可能比(x-x%y)// y大1。在这种情况下,Python返回后一个结果,以保持divmod(x,y)[0] * y + x%y非常接近x。
x//y
, (x-x%y)//y
应该等于x == (x//y)*y
。我想知道在舍入发生时x//y
如何大于(x-x%y)//y
。< / p>
答案 0 :(得分:0)
作为一个快速的“例子”来探索这个角落案例,在一个空闲的 shell 中,我输入:
x,y=1.0,0.1
然后:
x/y;x//y;x%y;x-x%y;(x-x%y)//y;x//y==(x-x%y)//y
。
对于大多数是 y 倍数的 x 值,最终结果是 True
(例如,对于 x == 0.1 到 0.9),但在 x == 1.0 的情况下,它是 {{1 }}。
False
:
x,y=0.9,0.1
9.0
8.0
0.09999999999999998
0.8
8.0
True
:
x,y = 1.0,0.1