【发布时间】:2019-08-09 20:47:19
【问题描述】:
在检查浮点数之间的相等性时需要小心,并且通常应该考虑到容差,例如使用numpy.allcose.
问题 1: 使用“in”关键字检查特定浮点数的出现是否安全(或者是否有类似的关键字/函数用于此目的)?示例:
if myFloatNumber in myListOfFloats:
print('Found it!')
else:
print('Sorry, no luck.')
问题 2:如果不是,那么整洁的解决方案是什么?
【问题讨论】:
-
是的,为什么你会觉得它不好?
-
我认为如果您使用与
myListOfFloats的元素不同的公式计算myFloatNumber,则此评论是有效的。如果你用完全相同的代码得到这些数字,那么所有的错误都是一样的,你不会有任何问题。 -
或者样本 I/O 可以做到这一点
-
是的,你必须小心这个,例如
3.4 in [3.45, 5] -> False。一种选择是使用decimal模块将列表中的所有浮点数剪切到相关浮点数的长度,然后检查它是否在列表中 -
整洁的解决方案:
np.isclose(<your_array>, <your_ref_value>).any()。如果需要,您可以将公差传递给isclose。
标签: python numpy floating-point floating-point-comparison