C++ BOOST\u CHECK\u CLOSE失败输出的格式化?

C++ BOOST\u CHECK\u CLOSE失败输出的格式化?,c++,unit-testing,boost,C++,Unit Testing,Boost,我正在使用boost测试框架向遗留代码添加测试 一个这样的测试可能是 double expectedPrice = /*...local computation*/ BOOST_CHECK_CLOSE(expectedPrice, object->price, ACCURACY_THRESHOLD); 其中expectedPrice是本地计算的双重值,对象从被测系统中检索 error in "MyTest": difference{0.21097%} between expectedPr

我正在使用boost测试框架向遗留代码添加测试

一个这样的测试可能是

double expectedPrice = /*...local computation*/
BOOST_CHECK_CLOSE(expectedPrice, object->price, ACCURACY_THRESHOLD);
其中expectedPrice是本地计算的双重值,对象从被测系统中检索

error in "MyTest": difference{0.21097%} between expectedPrice{4.7300000000000004} and object->price{4.7400000000000002} exceeds 1.0000000000000001e-05%
当然,考虑到所有的小数,这有点难理解。考虑到我使用的是裸体翻拍而不是其他类型的翻拍,有什么方法可以使测试输出的格式更好/不同吗?

您可以尝试:


这是已知的问题。使用已知的解决方案。只是有点难以实现,尽管我仍然希望在某个时候实现。同时,你还必须处理你的iostream库产生的任何输出。

@Martin-它们肯定都是双倍的。在这方面,更大的门槛有什么帮助?他们确实是不匹配的4.73和4.74-我只是在寻找更可读的输出…谢谢-尝试过,但没有改变。我假设boost在幕后使用了其他东西……从代码的外观来看,它只是使用了运算符“已知的解决方案”——我可以在代码中实现它?或者说,这是众所周知的提振人的方法,图书馆需要实施?@sdg这是图书馆可以实施的方法。本质上,有一种算法可以始终正确地打印浮点值。它既不简单,也不是非常高效,但它对测试框架非常有效(与大多数iostream libs使用的算法不同,后者速度更快,但容易出现0001或999999个尾部)。Gennadly很可能意味着事实上的标准dtoa()算法: