js 字符串转整数 然后在+百万的数 为什么计算结果会出错?
3825567180763585000 + 100万 200万 300万的时候计算结果都是正常的 为什么+400万的时候 计算结果就出错了3825567180767585300怎么保证计算正确性 谢谢
回复
1个回答

test
2024-06-20
超出最大整数就会出现不正常的结果,首先了解下BigInt,就是为了解决这个问题
BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值.在对大整数执行数学运算时,以任意精度表示整数的能力尤为重要,使用BigInt,整数溢出将不再是问题.
最大整数: Number.MAX_SAFE_INTEGER -> 9007199254740991
最小整数: Number.MIN_SAFE_INTEGER -> -9007199254740991
创建:BigInt("9007199254740995"); // → 9007199254740995n
//不使用BigInt返回结果是异常的
9007199254740992 === 9007199254740993 true
//使用BigInt返回结果是正常的
9007199254740992n === 9007199254740993n false
BigInt("9007199254740995") + BigInt("9007199254740995")=18014398509481990n
Number(18014398509481990n) = 18014398509481990
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容