问题
可以参考这个
https://segmentfault.com/q/1010000010460890
大概代码
var a = 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111;
var b = 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222;
var c = a + b;
console.log(a); // 1.1111111111111112e+98
console.log(b); // 2.2222222222222224e+98
console.log(c); // 3.333333333333333e+98
解决办法
引入第三方库 decimal.js
那么文章中的问题,就迎刃而解了
Decimal 最大值(Number.MAX_VALUE MAX_VALUE 属性是 JavaScript 中可表示的最大的数。它的近似值为 1.7976931348623157 x 10308)
// console.log(Number.MAX_VALUE);
var a = 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111;
var b = 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222;
var c = a + b;
// console.log(a>Number.MAX_VALUE);
console.log(a); // 1.1111111111111112e+98
console.log(b); // 2.2222222222222224e+98
console.log(c); // 3.333333333333333e+98
a = new Decimal(a);
b= new Decimal(b);
c= a.plus(b);
console.log(a); // 转换为对象,可正常计算
console.log(b); //转换为对象,可正常计算
console.log(c); // 转换为对象,可正常计算```
使用Api 参考
官网 api
http://mikemcl.github.io/decimal.js/#toJSON
github地址
https://github.com/MikeMcl/decimal.js
参考博客
https://blog.youkuaiyun.com/qq3401247010/article/details/78784788#commentBox