在 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_EQ
EXPECT_DOUBLE_EQ
ASSERT_FLOAT_EQ
和ASSERT_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
我有一些代码可以计算 (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_EQ
EXPECT_DOUBLE_EQ
ASSERT_FLOAT_EQ
和ASSERT_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