Javascript中的parseInt行为

时间:2015-08-31 09:49:54

标签: javascript parsing

我打开终端浏览器(例如Chrome)。

我写这个:

var y = "11000011010101011";
  

“11000011010101011”

parseInt(y)
  

11000011010101012

我期待11000011010101011,但它会返回11000011010101012

有人知道为什么吗?

3 个答案:

答案 0 :(得分:6)

Javascript中的每个数字都表示为double precision floating point。 JavaScript可以准确地表示最大为9007199254740991(2 ^ 53 - 1)的整数。一旦超过这个限制,你就会失去精确度。

答案 1 :(得分:0)

只有9007199254740991是javascript中的安全整数。 这是类似

的情况
9007199254740992 + 1 // 9007199254740992
9007199254740993 + 1 // 9007199254740992
9007199254740994 + 1 //9007199254740996

请参阅链接了解更多详情 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number http://www.2ality.com/2012/04/number-encoding.html

另见这一个 how addition of Number works on max limit numbers?
这是与其原始相关的问题

答案 2 :(得分:0)

根据this页面。

Javascript中的所有数字都是64位浮点数,整数由53位mantisa表示。 因此,您不能存储大于2 ^ 53 -1且小于-2 ^ 53 +1的整数而不会丢失精确度(Javascript会对您的数字进行舍入以便能够存储它)。

您的号码大于2 ^ 53 -1。尽管String可以存储它,但为了将它存储在“Number”变量中,它必须被舍入,失去精度并返回一个稍微不同的数字。