我有一个包含 float 的列表,每个数字有 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!"
第二条消息没有显示。
最佳答案
比较 float 以获得完全相等通常不会如您所愿。这是因为计算机中的 float 具有一种表示(存储格式),对于许多实数来说,这种表示本质上是不准确的。
我建议在这里阅读:http://floating-point-gui.de/并使用“epsilon”公差值进行“模糊比较”之类的操作,只要它们相差小于 x% 或其他任何值,就认为数字相等。
关于python - 使用带有浮点值的列表运算符 "in",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16380272/