BOOST_CHECK_CLOSE和BOOST_CHECK_CLOSE_FRACTION之间的区别?

Rhy*_*ich 16 boost

谁能描述BOOST_CHECK_CLOSE和之间行为的差异BOOST_CHECK_CLOSE_FRACTION文档暗示两个宏都相同地处理它们的第三个参数,这使我怀疑文档是错误的.

特别是,BOOST_CHECK_CLOSE_FRACTION给我一些奇怪的结果:

error in "...": difference between *expected{0} and *actual{-1.7763568394002506e-16} exceeds 9.9999999999999995e-07
Run Code Online (Sandbox Code Playgroud)

有没有因为我期望零结果?我没有成功阅读基础宏声明.请注意BOOST_CHECK_SMALL不适合我的用例(比较线性代数运算后的两个向量).

Ric*_*lap 8

根据这个讨论,one(BOOST_CHECK_CLOSE)将第三个参数视为表示百分比,而另一个(BOOST_CHECK_CLOSE_FRACTION)将其视为表达分数.因此,第一个中的.01应该等于第二个中的.0001.

不确定这是否能解释您的问题 - 您是否得到了相同的奇怪结果BOOST_CHECK_CLOSE?如果0引起了一个问题,我不会感到震惊 - 但我没有第一手宏观经验.


Gen*_*tal 6

是.零不是"接近"任何值.您可以改用BOOST_CHECK_SMALL.