函数np.allclose(a, b)用于比较具有给定公差的浮点数组
np.allclose:
默认所比较数字的等级是1个单位的,若两数都是一个数量级则认为它们相等。
例如在上图中,它就认为1e-9和2e-9相同。
如果要进行更细致的比较,需要通过atol指定比较等级:
np.allclose(1e-9, 2e-9, atol=1e-17) == False // (2e-9 - 1e-9) < atol值 则True,否则False
math.isclose:
进行比较没有假设前提,而是基于用户给出的一个合理abs_tol值:
math.isclose(0.1+0.2–0.3, abs_tol=1e-8) == True。
此外,np.allclose在绝对和相对公差公式中还存在一些小问题,
例如,对某些数存在allclose(a, b) != allclose(b, a)。
这些问题已在math.isclose函数中得到解决。
参考: