gpt4 book ai didi

c++ - 在 Catch2 中检查近似零的规范方法是什么?

转载 作者:行者123 更新时间:2023-12-01 14:18:43 26 4
gpt4 key购买 nike

与 Catch2 中的近似零进行比较的规范方法是什么?

我发现这种方式的容差为 1e-12,但目前尚不清楚这是最好的方式:

TEST("a approx. equal to b", "[test]"){
REQUIRE( a - b == (0_a).margin(1e-12) );
}

我不是在问如何比较 float 。我知道这不是一个简单的问题。我问的是如何使用 Catch2 给定事先已知的特定容差。

以下内容不起作用,因为相对(epsilon)错误在零附近表现不佳:
TEST("a approx. equal to b", "[test]"){
REQUIRE( a - b == (0_a).epsilon(1e-5) );
}

其他可能的(不太好)(替代方案似乎是
TEST("a approx. equal to b", "[test]"){
REQUIRE( std::abs( a - b ) < 1e-12 );
}
TEST("a approx. equal to b", "[test]"){
REQUIRE_THAT( a - b, WithinULP(0., ???));
}
TEST("a approx. equal to b", "[test]"){
REQUIRE_THAT( a, WithinULP(b, ???));
}

最佳答案

(a == Approx(b).margin(1e-12))

From the Catch2 GitHub

关于c++ - 在 Catch2 中检查近似零的规范方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56466022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com