ASSERT_DOUBLE_EQ在仅相差2个ULP时验证失败的问题咨询
ASSERT_DOUBLE_EQ在仅相差2个ULP时验证失败的问题咨询
我最近在使用Google Test的浮点数断言时碰到了一个搞不懂的问题,按照Google Test里关于浮点数比较的文档说明,EXPECT_DOUBLE_EQ和ASSERT_DOUBLE_EQ这两个断言是用来验证两个double值是否近似相等的,只要它们之间的差距在4个ULP(最后一位的单位)以内就应该通过才对。
但是我写了下面这个测试用例,明明两个数值的差距只有2个ULP,结果断言却直接失败了:
TEST(Foo, doubles_match) { ASSERT_DOUBLE_EQ(0.62469504755442462, 0.62469504755442407); }
运行测试后得到的错误结果是:
error: Expected equality of these values: 0.62469504755442462 0.62469504755442407
我到底哪里想错了?或者说我忽略了什么关键细节吗?
备注:内容来源于stack exchange,提问作者Constantinos Glynos
相关产品推荐
相关产品推荐

