编程语言
首页 > 编程语言> > 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。

标签:存储,0.2,Python,32,0.3,float,无限,64,类型
来源: https://blog.csdn.net/suic009/article/details/122815920