“它比 $(a+b)/2$ 更不容易因同号大端点相加而溢出;极端异号端点仍可能使 $b a$ 溢出,工程实现宜使用平台提供的安全 midpoint 操作或按符号缩放。更关键的终止边界来自浮点间…”
形式陈述
设
对可表示数
这里 machine epsilon 在不同文献和语言库中可能指
当
这是带条件的相对误差陈述。若
这里应使用绝对界,不能除以趋近于零的
直觉
ulp 是浮点尺在
ties-to-even 让连续出现的精确中点不总朝同一方向舍入,可减少某些系统性偏差;它不保证一组实际数据的舍入误差均值为零,也不允许把误差当独立随机噪声。
例子与边界
在 binary64 中,
还可以用一个四位二进制有效数字的玩具格式逐格检查规则。在
次正规区的例子更直接。设最小正次正规数为
正确舍入也不等于“真实结果没有误差”。它只保证返回目标格式中按指定方向最合适的数;若精确结果不可表示,误差仍然存在,只是这一步没有更好的同格式答案。把一个值先舍入到扩展精度、再舍入到目标精度还可能出现 double rounding;证明若假定每步直接正确舍入到 binary64,就必须核对实际中间格式。
推论与应用
unit roundoff 是标准浮点算术模型的基本参数,多步误差界中的
使用舍入误差公式时应同时记录格式、舍入方向、正规/次正规范围和是否允许溢出。若实现采用融合乘加或扩展精度,中间舍入次数改变,分析路径也应相应调整,而不是事后把所有差异塞进一个模糊的“机器误差”。
参考资料
- IEEE, IEEE Standard for Floating-Point Arithmetic, IEEE Std 754-2019.
- Tobin A. Driscoll and Richard J. Braun, Fundamentals of Numerical Computation, Python online edition, §1.1 Floating-point numbers, accessed 2026.
- David Goldberg, “What Every Computer Scientist Should Know About Floating-Point Arithmetic,” ACM Computing Surveys 23(1), 1991.
- Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd ed., SIAM, 2002, Ch. 2.