0.1+0.2 不等于 0.3

>>> 0.1+0.2
0.30000000000000004
>>> 
>>> 0.1+0.2 == 0.3
False
>>> round(0.1+0.2,1) == 0.3
True
>>> 

这个问题叫做 不确定尾数问题
不是只在python中存在 在很多编程语言中都存在
它涉及到了计算机对数字运算的内部实现原理

浮点数间运算存在不确定尾数,不是Bug
在计算机中所有数字都是由2进制表示

严格来说 53位二进制表示数字部分
由于二进制和十进制不存在严格的对等方式

所以0.1用二进制表示是一个无限小数
计算机只能截取其中的53位 无限接近0.1
计算机只会显示16位


1.png

详情视频

round(x,d):对x进行四舍五入 d是小数截取位数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。