c++ - BOOST_CHECK_CLOSE_FRACTION 问题

标签 c++ boost boost-test

我正在使用 Boost::Test 库,我正在尝试检查实际百分比值是否接近预期值:

BOOST_CHECK_CLOSE_FRACTION(
    items[i].ExpectedPercent,
    items[i].ActualCount / totalCount,
    0.05);

由于某些原因,即使值足够接近,此检查也会失败:

difference between items[i].ExpectedPercent{0.40000000000000002}
   and items[i].ActualCount / totalReturned{0.42999999999999999}
                                    exceeds 0.050000000000000003

这是 Boost 的问题还是我使用 Boost 的方式有问题?

最佳答案

经过一些测试,发现 BOOST_CHECK_CLOSE_FRACTION 的文档是不正确的。公差应指定为预期值的一小部分。

所以,TFAE:

BOOST_CHECK(abs(x - y) < (min(x, y) * 0.1));
BOOST_CHECK_CLOSE(x, y, 10);
BOOST_CHECK_CLOSE_FRACTION(x, y, 0.1);

关于c++ - BOOST_CHECK_CLOSE_FRACTION 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2113634/

相关文章:

c++ - 将 Jenkins 与 boost.test 单元测试一起使用

c++ - 模板类中的 Int 模板成员函数

c++ - 根据程序员的哲学,我想知道在哪里声明变量

c++ - 将 gsl c++ 程序与英特尔 MKL 链接

c++ - 为什么 clang 不使用自动返回类型省略此函数中的拷贝?

c++ - 使用Boost Filesystem C++将具有特定扩展名的文件名保存在特定的文件夹中

c++ - Visual Studio LNK1104 而不是 LNK2019

c++ - 将多个字符串作为一个字符串读取? C++

c++ - C++ 中的多个整数类型类

c++ - 如何对在测试对象中创建的模拟对象做出期望?