最后,把所计算出的十进制浮点数的整数部分和小数部分相加,就得到了最终的结果,即58.625。
但是,有一点需要注意:假设当初在将浮点数的小数部分由十进制转换成二进制时,只是计算到了“满足精度要求”为止,而并没有或者无法计算到“余下的小数为0”为止,这时,如果再用这种方法将二进制浮点数的小数部分转换成十进制,那么所计算出的十进制小数就会与实际的十进制浮点数的小数部分之间产生误差。
但如果当初在将浮点数的小数部分由十进制转换成二进制时所取的精度越大(即有效小数位数越多),那么这误差就会越小。
对于“将双精度的58.625的二进制转换成十进制”,也是同样的计算方法。这里就不再赘述了。只不过,需要注意的是E=e 1023;至于其他步骤,则都一样。
补充:二进制浮点数的小数部分转换成十进制的原理
其实,“二进制浮点数的小数部分转换成十进制”的原理,和“二进制整数转换成十进制整数”的原理类似。
我们先来回顾一下,十进制浮点数的小数部分是如何转换成二进制的。
依旧以58.625为例。转换过程如下:
然后,从上往下顺序取整,即得到0.625的二进制数为0.101。
接下来,我们反过来推导,将二进制数0.101转换回十进制数0.625。具体过程如下:
于是,最终就得到了:
显然,这个多项式中最左边项的系数1就是二进制数0.101的最低位,而最右边项的系数1就是二进制数0.101的最高位。所以,可以得到: