js 字符串转整数 然后在+百万的数 为什么计算结果会出错?

作者站长头像
站长
· 阅读数 18

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

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