Python平等比较

时间:2015-11-11 20:09:32

标签: python

我在python 2.7中遇到了一个相等比较问题。我运行了以下程序,期望elist[i][1] == MC将返回True

elist=elist=[[1,1],[2,4],[3,9]]
MC=0
while (MC<1.01):
    MC+=0.01
    for i in range(len(elist)):
        #test equality
        print elist[i][1]
        print MC
        print elist[i][1]==int(MC)

但它出现了:

1
1.0
False
4
1.0
False
9
1.0
False

即使我改成:

float(elist[i][1])==float(MC)

它仍会返回相同的结果。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

这是由于大多数计算机处理浮点数的方式。 0.1是无理二进制数,如1/3是十进制数。更简单的演示是print(0.1+0.1+0.1),可以打印0.30000000000000004。如果我与==进行比较,那么该数字将被视为与0.3不同。在这种情况下,您应该比较几乎相等,如上面的评论中所述。