IEEE-754单精度表示的最大绝对误差与相对误差求解
归一化浮点数的基本表示
IEEE-754单精度归一化浮点数的结构为:
- 符号位:1bit(0表示正,1表示负)
- 指数位:8bit(偏移量为127,实际指数值 = 指数位二进制值 - 127,范围是-126到+127)
- 尾数位:23bit(隐含最高位的1,因此尾数实际表示为
1.f,其中f是23bit的二进制小数)
对应的数值公式为:value = (-1)^sign × (1 + significand) × 2^(exponent)
最大绝对误差
绝对误差是真实值与浮点数表示值的差值的绝对值,其最大值取决于舍入方式和数值的量级:
默认就近舍入(Round to Nearest, Ties to Even)
相邻两个归一化浮点数的间距为2^(e-23)(其中e是当前数的实际指数值),因为尾数最低位的权重是2^-23,乘以2^e后得到间距。
就近舍入的最大误差是间距的一半,即:max_absolute_error = 2^(e-24)
例如,当指数e=0时(数值范围在[1,2)),最大绝对误差为2^-24 ≈ 5.96e-8。截断舍入(向0舍入)
若直接舍去尾数后的所有额外位,最大误差等于相邻浮点数的间距,即:max_absolute_error = 2^(e-23)
此时当e=0时,最大绝对误差为2^-23 ≈ 1.19e-7。
注意:绝对误差与数值的指数e正相关,数值越大,绝对误差越大。
最大相对误差
相对误差是绝对误差与真实值绝对值的比值,公式为:relative_error = |真实值 - 表示值| / |真实值|
就近舍入下的最大相对误差
对于归一化浮点数,真实值x满足 2^e ≤ |x| < 2^(e+1),结合就近舍入的最大绝对误差2^(e-24),可得:max_relative_error ≤ 2^(e-24) / 2^e = 2^-24 ≈ 5.96e-8
这个值是固定的,与指数e无关,因为绝对误差和真实值的量级同比例变化。
截断舍入下的最大相对误差
若采用截断舍入,最大绝对误差为2^(e-23),真实值最小为2^e,因此:max_relative_error ≤ 2^(e-23) / 2^e = 2^-23 ≈ 1.19e-7
对您疑问的解答
关于无穷等比数列求和得到2^-23
这个结果对应的是截断舍入的最大误差:当真实值的尾数部分在23位之后全为1时,截断后丢失的数值是2^-24 + 2^-25 + ...,这是首项为2^-24、公比为1/2的无穷等比数列,求和结果为2^-23,这是截断舍入下的最大绝对误差(针对e=0的情况)。但IEEE-754默认采用就近舍入,此时最大误差是这个值的一半。相对误差公式的正确性
您提到的((真实值-给定值)/真实值)×100是相对误差的百分比形式,公式本身是正确的,但需要注意取绝对值(误差是绝对值),且通常我们关注的是相对误差的上限,而非具体某个数的误差。
内容的提问来源于stack exchange,提问作者MathIsFun

