Python教程

Python-float 0.1+0.2为什么不等于0.3

本文主要是介绍Python-float 0.1+0.2为什么不等于0.3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

运行如下:

原理:

举个例子,float类型39.29。在计算机存储时,它会先把整数部分39转换成二级制,至于后面的0.29则会一直将它乘以2,如果大于1则减去一继续乘以2,如果等于1则停止。

这样就难免出现一些问题,我们可以从上面的图片看到接下来的操作将无限循环0.16*2=0.32及后面的计算。因为是无限循环,而我们float类型一般都是32位、64位存储,超过了存储范围,自然数据就不准确了。

接下来对得到的二进制进行科学计数法表示(小数点向前移动了5个位置,后面由于是二进制所以是2**5:

因为是无限循环,而我们float类型一般都是32位、64位存储,超过了存储范围,自然数据就不准确了。

建议:对于敏感的小数类型,可以使用decimal。

这篇关于Python-float 0.1+0.2为什么不等于0.3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!