我在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)
它仍会返回相同的结果。
有人知道为什么会这样吗?
答案 0 :(得分:0)
这是由于大多数计算机处理浮点数的方式。 0.1是无理二进制数,如1/3是十进制数。更简单的演示是print(0.1+0.1+0.1)
,可以打印0.30000000000000004
。如果我与==
进行比较,那么该数字将被视为与0.3不同。在这种情况下,您应该比较几乎相等,如上面的评论中所述。