JavaScript parseInt转换有问题

Man*_*ddi 7 javascript

跑步时

   console.log(parseInt("9658921879781125"))
Run Code Online (Sandbox Code Playgroud)
它给出的值9658921879781124小于原始值.

为什么会这样?

Gab*_*oli 5

那是因为

9658921879781125 > Number.MAX_SAFE_INTEGER // true
Run Code Online (Sandbox Code Playgroud)

所以尝试使用大于的数字是不安全的 Number.MAX_SAFE_INTEGER


MAX_SAFE_INTEGER常数的值为9007199254740991(9,007,199,254,740,991 或 ~9 千万亿)。该数字背后的原因是 JavaScript 使用 IEEE 754 中指定的双精度浮点格式数字,并且只能安全地表示 -(2 53 - 1) 和 2 53 - 1 之间的数字。

在此上下文中,安全是指准确表示整数并正确比较它们的能力