提升单元测试:BOOST_CHECK_CLOSE回报 1.#INF%
Boost unittest: BOOST_CHECK_CLOSE returns 1.#INF%
我正在使用 Boost 单元测试框架来比较双打。结果符合预期,但我想BOOST_CHECK_CLOSE无法正确识别它们。代码基本上如下:
BOOST_AUTO_TEST_CASE(FooBarTest)
{
double foo = 2.2500000047015632e-006;
double bar = 0.0;
double tolerance = 90.0;
BOOST_CHECK_CLOSE(foo, bar, tolerance);
}
此操作失败,并显示以下消息:
error in [...]: difference{1.#INF%} between foo{2.2500000047015632e-006} and bar{0} exceeds 90%
我正在使用带有VC100(Visual Studio 10编译器)的Boost 1.55。我正在编译 Win32 版本。
这是我应该期待的结果吗?我想这些值彼此足够接近,它应该返回成功。提升在内部除以 0.0 吗?
您可以使用
BOOST_CHECK_SMALL来检查接近零。有关更多背景信息,请参阅:增强 UTF 文档、有关浮点比较算法的文章。
那是因为bar
为零。BOOST_CHECK_CLOSE检查这两个值是否"接近",也就是说,在您的情况下,彼此的 90%。为此,您使用除法,并且不能除以 0。
或者,正如这个答案如此简洁地解释的那样 - 零与任何东西都不接近。
相关文章:
- ofstream::close() 是否在 Linux 上调用同步?
- 如果我在字符数组上使用 close() 会发生什么?
- C++ 模板函数无法将"std:string"转换为"double"作为回报
- 收益率和回报有何不同?
- "expression cannot be used as a function"回报声明
- 我可以制作一个基于孩子具有不同回报的虚函数吗?
- 扣除指南的尾随回报类型不是专门化
- 为什么C++中没有无用的条件回报警告
- 早期回报构成功能的最简短方法
- ZeroMQ 在 context.close() 中被阻止.如何在C++中安全地关闭套接字和上下文?
- 我可以使用 declval 来构造未使用的回报吗?
- 使用具有不同类型不同回报的模板函数不起作用
- inData.open and inData.close in C++
- 无法将"QJsonObject"转换为"int"作为回报
- 为什么 QQuickWindow->close() 不从 rootObjects 中删除对象?
- 如何在OS X上阻止QProgressDialog的'native close button'?
- 提高scoped_lock回报行为
- 对ifstream对象调用close时出现分段错误
- 将 Python 嵌入 C++ 时没有回报
- 关闭文件流时出错,其存在取决于与 C++ 中的 .close() 语句相同的布尔值