本文介绍了测试浮点平等的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有一个函数来测试浮点近似相等在python吗?类似的东西,
Is there a function to test floating point approximate equality in python? Something like,
def approx_equal(a, b, tol):
return abs(a - b) < tol
我的用例类似于Google的C ++测试库gtest.h定义 EXPECT_NEAR
。
My use case is similar to how Google's C++ testing library, gtest.h, defines EXPECT_NEAR
.
以下是一个示例:
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))
推荐答案
- 对于测试数字,有
nose.tools.assert_almost_equal
和等价的unittest.assertAlmostEqual
- 对于测试数字或数组,有
numpy.testing.assert_allclose
- 数字,
math.isclose
按,因为Python 3.5。 - 对于比较数字或数组,有
numpy.allclose
li>
- For testing numbers, there are
nose.tools.assert_almost_equal
and equivalentlyunittest.assertAlmostEqual
- For testing numbers or arrays, there is
numpy.testing.assert_allclose
- For comparing numbers, there is
math.isclose
as per PEP 485 since Python 3.5. - For comparing numbers or arrays, there is
numpy.allclose
.
这篇关于测试浮点平等的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
- For testing numbers, there are