python - 测试浮点相等

标签 python comparison floating-point

在 python 中是否有测试浮点近似相等的函数?类似的,

 def approx_equal(a, b, tol):
     return abs(a - b) < tol

我的用例类似于 Google 的 C++ 测试库 gtest.h 定义 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))

最佳答案

  • 为了比较数字,有 math.isclose
  • 对于比较数字或数组,有 numpy.allclose
  • 对于测试数字或数组,有 numpy.testing.assert_allclose

关于python - 测试浮点相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4028889/

相关文章:

c++ - std::set 中的函数和方法指针

java - 评估大量 Java 字符串比较条件的风格更优雅的方法是什么?

floating-point - 如何找到 3D 矢量的哈希值?

python - 如何使用正则表达式从文件中提取文本?

python - pysvn.ClientError : WC locked with sqlite attempt to write a readonly database during checkout to a same directory in the second time

string - Smalltalk:如何检查字符串是否只包含数字?

java - 对于大 n,java.lang.Math.pow(x, n) 的准确/精确度如何?

C 语言 : convert 3 char string ("123") to %. 2f (1.23)

python - 如何检查两个列表是否具有相同顺序的相同对象?

python - glibc rand() 不适用于 python 但在在线编译器中工作正常