为什么大部分的浮点数在计算机中是不精确的?

首先,我们所说的浮点数是十进制的浮点数,比如3.2、5.7,而计算机在存储任何数据都是以二进制存储的,这里就存在一个浮点数十进制转换为二进制的过程,先来看一个例子。

将十进制的6.2转换为二进制

整数转整数,小数转小数

6:用短除以2,写出每次的余数,直到商为一,从下往上写就是二进制

0.2:乘以2之后,取整数位的0或者1,直到结果为1.0

我们可以看出上面这个例子中0.2在多次乘以2取整数位之后发生了循环,转换之后就是001100110011...不断地循环。然而计算在存储的时候,只会保存循环的前23位,为什么是23位?

以为浮点数在计算机的储存位数如下:

所以保存的尾数位数就是前23位,这样就造成了误差。我们所看到的输出的数就是一个近似这个这个小数的数。

猜你喜欢

转载自blog.csdn.net/m0_48011056/article/details/125360450