测试浮点相等 [英] Testing floating point equality

查看:22
本文介绍了测试浮点相等的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 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))

推荐答案

  • 为了比较数字,有 math.isclose.
  • 对于比较数字或数组,有 numpy.allclose.
  • 对于测试数字或数组,有 numpy.testing.assert_allclose
  • 这篇关于测试浮点相等的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆