【发布时间】:2015-02-14 01:29:42
【问题描述】:
我在使用 Google Test 1.7.0 测试浮点值是否相等时遇到了一些问题。
我的断言如下所示:
ASSERT_NEAR(124691356.375f, actual, DELTA);
测试失败并出现以下错误:
124691356.375f 与实际的差为 3.625,超过了 DELTA,其中 124691356.375f 计算为 124691360,实际计算为 124691356.375,DELTA 计算为 0.0625。
发生了什么事? actual 和预期结果明显在 0.0625 的允许误差范围内。为什么 gtest 以这种方式评估浮点文字 124691356.375f?
更新: DELTA 和 actual 是 double 类型,预期值是浮点字面量。如果我将文字更改为双精度,或将其他参数更改为浮点数(以便所有内容都属于同一类型),则测试通过。问题仍然存在 - 当类型不匹配时,是什么导致了这种行为?
【问题讨论】:
标签: c++ floating-point googletest