使用带浮点值的列表运算符“ in”
问题内容:
我有一个带有浮点数的列表,每个数字带有3个小数(例如474.259)。如果我像这样验证清单中的数字:
if 474.259 in list_sample:
print "something!"
然后会显示该消息,但是如果我从另一个列表中提取该数字并四舍五入,则:
number = other_list[10]
number = round(number, 3)
if number == 474.259:
print "the numbers are same!"
if number in list_sample:
print "something!"
第二条消息未显示。
问题答案:
比较浮点数以获得完全相等通常不会做您想要的。这是因为计算机中的浮点数具有一种表示形式(存储格式),这种表示形式对于许多实数本质上是不准确的。
我建议在这里阅读:http : //floating-point-
gui.de/
并使用“
epsilon”公差值进行“模糊比较”之类的事情,以使数字相等,只要它们之间的差异小于x%管他呢。