python - 使用带有浮点值的列表运算符 "in"

标签 python numpy

我有一个包含 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/

相关文章:

python - 如何获取装饰器包装的函数的源代码?

python - python中的StopIteration错误

python - 从python中的矩阵中提取子元素

python - 使用 numpy 进行智能索引

python - 初始化字符串数据的numpy数组的奇怪行为

python - 试图从文件写字典,键变成值

python - 如何分解连续每个文档的顶部单词; Pandas 数据框

python - 我可以在创建字典时引用字典值吗?

Python - 合并许多形状未知的大numpy数组,这些数组不适合内存

python - 查找数组中每个索引左侧/右侧的 Argmin