浮点数的分类与舍入

IEEE 754 根据指数位(exp)和小数位(frac)的不同组合,将浮点数分为三类。

三类浮点数

1. 规格化数(Normalized Numbers)

条件:exp 不全为0且不全为1

这是最常见的浮点数形式。尾数的计算公式为:

其中 是 frac 部分的各位(高位开始)。这里的 隐含1(leading 1)是规格化数的关键特征——尾数部分实际有 位精度,但只显式存储了小数部分。

2. 非规格化数(Denormalized Numbers)

条件:exp 全为0

非规格化数用于表示0和非常接近0的数。

尾数公式:

指数固定为:

重要特性

  • 可以表示0(frac 全为0时, 分别由符号位决定)
  • 表示非常接近0的数,填补了规格化数最小正值到0之间的间隙
  • 非规格化数的间距是均匀的,而规格化数的间距随指数增大而增大

3. 特殊值(Special Values)

条件:exp 全为1

  • 无穷大(Infinity):exp 全1, frac 全0
    • (s=0)和 (s=1)
    • 在溢出或除以0时产生
  • NaN(Not a Number):exp 全1, frac 不全0
    • 表示无效运算的结果(如 , ,
    • NaN的frac部分可以承载诊断信息(quiet NaN vs signaling NaN)

数值分布特点

浮点数在数轴上的分布并不均匀:

  • 接近0的区域密度高(非规格化数和小的规格化数间距小)
  • 远离0的区域密度低(大的规格化数间距大)

这反映了浮点数的精度特点——相对精度大致恒定,但绝对精度随数值大小变化。

舍入方式

IEEE 754 定义了四种舍入模式:

模式说明
向偶舍入(Round-to-Even)默认模式,也是最常用的。舍入到最接近的值,恰好在中点时间向使最低有效位为偶数的方向舍入
向零舍入直接截断多余位数
向下舍入(向 向更小的方向舍入
向上舍入(向 向更大的方向舍入

向偶舍入的必要性

如果不采用向偶舍入而采用简单的”四舍五入”或者”向上舍入”,会引入统计上的偏差。向偶舍入在50%的情况下向上、50%的情况下向下,长期统计不会产生系统性偏差。

相关笔记

链接到