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

时间:2017-02-07 13:04:00

标签: python python-2.7

在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 ,就像在其他情况下一样期待?

由于

1 个答案:

答案 0 :(得分:0)

floats behave

的方式
>>> '%.30f' % 0.2
'0.200000000000000011102230246252'
>>> '%.30f' % 0.3
'0.299999999999999988897769753748'

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