摘要 再谈浮点数的表示误差:其舍入并不对应十进制的四舍五入。
计算机的错误计算(十)讨论了浮点数的表示误差。本节以单精度数为例,说明浮点数的舍入并不完全对应十进制的四舍五入。
单精度下,二进制数有 24 位二进制有效数字(称为 bit), 并且 有 8 位整数,所以,一般认为单精度浮点数对应十进制下的 8 位有效数字。
例1. 分析 324189233 在单精度下的输出。
首先,将其转换为二进制数,这时,它具有29位有效数字:
由于单精度下计算机只能保留前面的 24位有效数字,所以,接下来分两种情形讨论。
1. 截断
若将后面的 5 位舍弃,也就是全部变为0,则有
2. 进位
若进位,即将后面的 5 位舍弃,前24位再加1,则变为
这样,得到两个结果: 与 。
若分别对它们进行截断与进位,则会获得 4 个结果
遗憾的是,它们没有一个与 324189233 的 8 位数近似值相同:
另外,若要保留 9位数,则无论如何舍入,总有 2 位错误数字。
最后总结一句:虽然浮点数具有几种舍入模式,但是,有时其舍入并不对应十进制的四舍五入。