在 GTest 中,如何检查非常接近 0 的数字? EXPECT_FLOAT_EQ 不工作

In GTest, how to check for number very close to 0? EXPECT_FLOAT_EQ not working

我有一些代码可以计算 (a)sin/(a)cos 值,这些值预计非常接近 0,但是当我说

EXPECT_FLOAT_EQ(my_computed_var, 0);

我收到如下错误:

/path/to/my/test.cpp:148: Failure
      Expected: my_computed_var
      Which is: 9.9920072e-16
      To be equal to: 0

我应该怎么做?对于其他数字,我也得到这种类型的 "error":-4.3711388e-08

正在寻找有关处理此类浮点错误的具体建议和一般信息。

改用 EXPECT_NEAR or the FloatEq 匹配器。

Floating-Point Macros表示EXPECT_FLOAT_EQEXPECT_DOUBLE_EQASSERT_FLOAT_EQASSERT_DOUBLE_EQ会验证

the two float/double values are almost equal

和:

By "almost equal", we mean the two values are within 4 ULP's from each other.

带 ULP 的代表 Unit in the last places