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

双精度浮点数double的ULP误差计算结果错误问题求助

ULP误差计算误区解答

对于指数位相同的两个双精度浮点数,ULP误差的计算规则为:两个数的二进制尾数的数值差,尾数最低位每差1对应1 ULP。

你给出的两个double值符号位、指数位完全一致,无需处理指数对齐问题,直接对比尾数即可:

exact尾数末6位:0111110 → 十进制值为62
compt尾数末6位:1000100 → 十进制值为68

二者的尾数差值为68 - 62 = 6,因此ULP误差为6 ULP,和标准答案一致。

你的计数错误的核心原因是混淆了「两个值中间的浮点数个数」和「两个值的步长差」:
你统计的是0111110到1000100之间存在5个独立的double值,这部分统计是对的,但ULP误差计算的是两个值的差对应的最小步长数量,不是中间值的个数。可以用整数类比:整数1和整数3的差值是2(对应2个步长),但二者中间只有1个整数2,你之前的计数逻辑就相当于把步长差等同于中间值数量,所以比正确结果少了1。

内容的提问来源于stack exchange,提问作者Quang Thinh Ha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:54:02