为什么 python 除法余数运算符仅适用于整数分母



在python 2.7中使用除法余数运算符%时,当将其与十进制分母一起使用时,我遇到了意外的行为(至少对我来说(。下面举个例子:

>>> 0.1%0.1
0.0                 # as expected
>>> 0.2%0.1
0.0                 # as expected
>>> 0.3%0.1
0.09999999999999998 # what the hell?
>>> 0.4%0.1
0.0                 # aw expected
>>> 0.5%0.1
0.09999999999999998 # what the hell?
为什么操作 0.3%0.1 和

0.5%0.1 返回上述结果,而不是像其他情况和我预期的那样返回 0.0

谢谢

这就是浮点数的行为方式:

>>> '%.30f' % 0.2
'0.200000000000000011102230246252'
>>> '%.30f' % 0.3
'0.299999999999999988897769753748'

如果你想要确切的结果,你可以将每个数字乘以 10 并使用整数。

最新更新