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 封装类来进行相应的处理,才避开了精度丢失。
所以做相等判断时,也是要注意的
这么大的数,一般用不到吧