0.1+0.2 == 0.3

2021-07-31

0.1+0.2 == 0.3
运行结果:False

image.png

对于十进制,10的质因子有2和5 ,所以十进制中的1/2, 1/4, 1/5, 1/8, 1/10都可以精确表示。而1/3,1/6,1/7就会表示成循环小数。因为分母是质因子3,6,7

对于二进制,质因子就只有2. 所以二进制只能精确表示1/2, 1/4, 1/8, 等分数

因为Python在计算前会将我们输入的十进制数字转换为二进制,计算后,然后将二进制的结果又转换为十进制数字显示出来。

所以,十进制能精确表示的1/10和1/5,到了计算机运行环境的二进制中,1/5就变成了循环小数。

所以我们认知中的十进制上的0.1+0.2 = 0.3, 但是二进制中的0.1+0.2结果是一个循环小数。

当python以二进制运算完,再转会十进制并输出时,会做断尾处理,得到0.300000000004. 真正情况可能小数点后位数更多。

不同的编程语言中,0.1+0.2 结果都不同。JS中也得到一个循环小数。

解决方法

另外需要注意

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

相关阅读更多精彩内容

  • 暧昧让人变得贪心,绝情让人拥有死心 以前的时代是先有爱才有性,而现在的时代是先有性才有爱。 现在是海王的世界,就用...
    沫熙熙阅读 158评论 0 0
  • 笔记本用IDEA有点慢,各种莫名其妙的环境问题出现,于是换了Eclipse。打开工程后出现各种红叉报错,一看是lo...
    ziki阅读 8,627评论 0 1
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 129,795评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 8,028评论 0 4

友情链接更多精彩内容