JavaScript使用"+"将字符串转成数字出现问题?
JavaScript使用+号将数字string转为number是常用手段了,今天刷力扣发现有报错,后面发现了一个问题:
console.log(+'999') // ==> 999
但是为什么转换比较大的数字的时候会出现精度问题?
console.log(+'6145390195186705543') // ==> 6145390195186705000
原因是什么?有没有大佬可以解答
回复
1个回答

test
2024-07-05
js 的数字用的是 IEEE754 的浮点类型。他不能表示所有的整数。遇到表示不了的,就只能就近找一个可以表示的数字来近似了。
js 可以精确表示的最大整数是 Number.MAX_SAFE_INTEGER = 9007199254740991 (2^53 - 1)。 超过它的都可能遇到精度问题。
回复

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