python浮点数精度问题------为什么0.09+0.01=0.09999999999999999

i = 0.09
j = 0.01
s = i + j
print('s=',s)

试问,上面的程序输出是什么?

答案就是:s= 0.09999999999999999

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

利用round方法:

print(round(s, 1))

结果:0.1

猜你喜欢

转载自blog.csdn.net/a_cherry_blossoms/article/details/109136634