9999999999999999 == 10000000000000000 是真的,你知道吗!

js中 0.1 + 0.2 == 0.3; // false
这个大多数前端开发者都知道

但是 9999999999999999 == 10000000000000000; // true
这个却很少人知道

其实它的原理都是一样的 精度丢失的问题

JavaScript 的数字都是双精度浮点数,在计算机里用二进制存储。当有效位数超过 52 位时,会存在精度丢失。

js中会存在 小数和大整数的精度丢失的问题

小数和大整数的精度丢失,并不仅仅在 JavaScript 中存在。严格来说,使用了IEEE 754 浮点数格式来存储浮点类型的任何编程语言(C/C++/C#/Java 等等)都存在精度丢失问题。在 C#、Java 中,提供了 Decimal、BigDecimal 封装类来进行相应的处理,才避开了精度丢失。

所以做相等判断时,也是要注意的

这么大的数,一般用不到吧

参考:JavaScript 中小数和大整数的精度丢失

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值