关于python浮点数精度问题计算误差的原因分析

在python中使用浮点数运算可能会出现如下问题

a = 0.1+0.2
print(a)

输出的结果是

0.30000000000000004

原因如下:

出现上面的情况,主要还是因浮点数在计算机中实际是以二进制保存的,有些数不精确。
比如说: 0.1是十进制,转化为二进制后它是个无限循环的数:
0.00011001100110011001100110011001100110011001100110011001100
而python是以双精度(64)位来保存浮点数,多余的位会被截掉,所以看到的是0.1,但在电脑上实际保存的已不是精确的0.1,参与运算后,也就有可能点误差。

posted @ 2018-10-15 17:45  livalon1  阅读(3560)  评论(0编辑  收藏  举报