You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:24:30