在除法运算后,使用 floor division 和 int() 有什么区别吗?

3

在进行除法运算后应用floor division和int(),输出结果可能不同。请问可以解释一下原因或者给出具体的案例吗?

问题: int(a // b)不等于int(a / b)

情况: a和b是整数,0 < a,b <= 1e18

环境: Python 3.4.3

注意: 由于测试案例是由在线评测系统生成的且不对外公开,我无法列出具体案例。

希望您能提供帮助,谢谢。

1个回答

5

具体例子(Python 3.4.4 shell):

>>> int(99999999999999999/100000000000000000)
1
>>> 99999999999999999//100000000000000000
0

当(数学)浮点除法的结果非常接近整数时,就会发生这种情况,使得数值浮点除法结果向该整数四舍五入。

顺便提一下,我已经将问题的条件从a//b更改为int(a//b),但是这个问题和答案仍然有效。 - sam
1
@sam 如果 ab 是整数,那么 a//b 就是一个整数,因此 a//b == int(a//b) - Michael Butscher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接