JavaScript或AS3中的parseInt返回错误的值

时间:2016-06-15 12:51:55

标签: javascript

有人可以解释为什么所有这些parseInt操作评估为相同的数字 10153593963283296

parseInt函数(' 10153593963283294') 10153593963283294

parseInt函数(' 10153593963283295') 的 10153593963283296

parseInt函数(' 10153593963283296') 的 10153593963283296

parseInt函数(' 10153593963283297') 的 10153593963283296

parseInt函数(' 10153593963283298') 10153593963283298

在浏览器和节点命令行中测试。

谢谢!

2 个答案:

答案 0 :(得分:4)

您的号码大于Number.MAX_SAFE_INTEGER。 JavaScript甚至将整数存储为浮点数,因此一旦数字变得太大,就会失去精度。

答案 1 :(得分:1)

我认为是因为你已经达到了MAX_SAFE_INTEGER。

请阅读这篇文章:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER

有一张纸条:

"该数字背后的原因是JavaScript使用IEEE 754中规定的双精度浮点格式数字,并且只能安全地表示 - (253 - 1)和253 - 1之间的数字。

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