扫码关注官方订阅号
惊闻 0.1 + 0.2 !== 0.3,赶忙计算得验证,发现,0.1 加 0.2 等于 0.30000000000000004
0.1 + 0.2 == 0.30000000000000004 返回 True
谁能给我解释下为什么,javascript这是要闹哪样啊。。。
认证0级讲师
因为计算机是二进制来表示浮点数的,无法准确表示一个浮点数,只能逼近。所以0.1+0.2并不是精确的等于0.3,不仅禁是javascript这样,这不是语言的问题。 你要判断两个浮点数是否相等,还是建议用逼近的比较,比如
if(fabs(a-b) < 1E-10) ;//we think a is equals to b.
话说当你知道计算机只认识0和1时,你就应该知道0.1在计算机里面是不可能精确保存的的。
我有个疑问就是为什么除了0.1+0.2===0.3 为false外,其他的都是true呢 如0.4+0.2===0.6等等
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
因为计算机是二进制来表示浮点数的,无法准确表示一个浮点数,只能逼近。所以0.1+0.2并不是精确的等于0.3,不仅禁是javascript这样,这不是语言的问题。
你要判断两个浮点数是否相等,还是建议用逼近的比较,比如
话说当你知道计算机只认识0和1时,你就应该知道0.1在计算机里面是不可能精确保存的的。
我有个疑问就是为什么除了0.1+0.2===0.3 为false外,其他的都是true呢 如0.4+0.2===0.6等等