JavaScript使用"+"将字符串转成数字出现问题?

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

JavaScript使用+号将数字string转为number是常用手段了,今天刷力扣发现有报错,后面发现了一个问题:

console.log(+'999')   // ==>  999

但是为什么转换比较大的数字的时候会出现精度问题?

console.log(+'6145390195186705543')   // ==>  6145390195186705000

JavaScript使用"+"将字符串转成数字出现问题?

原因是什么?有没有大佬可以解答

回复
1个回答
avatar
test
2024-07-05

js 的数字用的是 IEEE754 的浮点类型。他不能表示所有的整数。遇到表示不了的,就只能就近找一个可以表示的数字来近似了。

js 可以精确表示的最大整数是 Number.MAX_SAFE_INTEGER = 9007199254740991 (2^53 - 1)。 超过它的都可能遇到精度问题。

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