python中是否有测试浮点近似相等的函数?有点像
def approx_equal(a, b, tol):
return abs(a - b) < tol
我的用例类似于谷歌的C++测试库GTest.h如何定义^ {CD1>}。
下面是一个例子:
def bernoulli_fraction_to_angle(fraction):
return math.asin(sqrt(fraction))
def bernoulli_angle_to_fraction(angle):
return math.sin(angle) ** 2
def test_bernoulli_conversions():
assert(approx_equal(bernoulli_angle_to_fraction(pi / 4), 0.5, 1e-4))
assert(approx_equal(
bernoulli_fraction_to_angle(bernoulli_angle_to_fraction(0.1)),
0.1, 1e-4))
math.isclose
。numpy.allclose
。numpy.testing.assert_allclose
不能有a函数,因为定义取决于上下文。
不总是有效的。在某些情况下
可能更合适。
另外,还有最受欢迎的。
可能更合适。
我看不出你怎么能要求一个(单一的)函数把所有的数学选择组合起来。因为这取决于应用程序。
另一种方法是计算两个数字的relative change(或相对差),即“用于比较两个数量,同时考虑到被比较事物的‘大小’”。Wikipedia文章中提到的两个formulas可以用于类似于Python中的以下比较中,Python还处理一个或两个值都为零的情况:
两种情况下的计算值都是无单位分数。在第一种情况下,基线值是两个数字的最大绝对值,在第二种情况下是它们的平均绝对值。本文对每一种方法进行了较为详细的论述,并对其利弊进行了分析。如果在比较之前乘以100,后者可以变成percentage difference(其中
tol
成为一个百分比值)。请注意,文章建议,如果变化值“本身就是一个百分比,那么最好用百分比来讨论它的变化”——即绝对变化。这两种方法(显然)都需要比简单地计算两个数之差的绝对值多一点的计算,这可能是一种考虑。
相关问题 更多 >
编程相关推荐