C++ 如何在Boost测试框架中检查双值中的前15个相关数字是否相同?

C++ 如何在Boost测试框架中检查双值中的前15个相关数字是否相同?,c++,unit-testing,boost,boost-test,C++,Unit Testing,Boost,Boost Test,我尝试使用似乎是为这项工作设计的工具:BOOST\u CHECK\u CLOSE,因此我进行了以下测试: BOOST_AUTO_TEST_CASE( MultivariateNormalDensityTest ) { double TOLLERANCE=1e-14; Eigen::Vector3d mu(0.0, 1.0, 2.0); Eigen::Matrix3d sigma; sigma << 2.0, 1.0, 0.5, 1.0, 2

我尝试使用似乎是为这项工作设计的工具:
BOOST\u CHECK\u CLOSE
,因此我进行了以下测试:

BOOST_AUTO_TEST_CASE( MultivariateNormalDensityTest )
{
  double TOLLERANCE=1e-14;  

  Eigen::Vector3d mu(0.0, 1.0, 2.0);
  Eigen::Matrix3d sigma;
  sigma << 2.0, 1.0, 0.5,
           1.0, 2.3, 0.7,
       0.5, 0.7, 1.7;

  MultivariateNormalDensity<3> mnd(mu, sigma);

  BOOST_CHECK_CLOSE(0.027671392189542814988, mnd(Eigen::Vector3d(0.0, 1.0, 2.0)), TOLLERANCE);
  BOOST_CHECK_CLOSE(0.0027063822550173750707, mnd(Eigen::Vector3d(2.0, 1.0, 0.5)), TOLLERANCE);
  BOOST_CHECK_CLOSE(0.024708597088231143424, mnd(Eigen::Vector3d(0.5, 1.5, 2.5)), TOLLERANCE);
  BOOST_CHECK_CLOSE(0.026554587643995836849, mnd(Eigen::Vector3d(-0.3, 0.6, 1.8)), TOLLERANCE);
  //examples calculated using R
}
当我做数学时,我得到:

(0.027671392189542815-0.027671392189542805)/0.027671392189542805=0.00000000000000036138406

小于1e-14。我做错了什么?

公差被指定为一个百分比,您的偏差为100。修正:

double TOLERANCE=1e-12;   // Percent

我不知道库,但我猜公差是相对于输入值的,也就是说,它确实在检查你是否在0.027*1e-14=2.7e-16范围内。(在“容忍度”中只有一个“l”。)哇,我从来没有想过开发人员会投入真正的百分比!谢谢
double TOLERANCE=1e-12;   // Percent