为什么会这样:parseInt(1111111111111111,2)=== parseInt(11111111111111111,2)

时间:2015-04-06 20:34:50

标签: javascript

这个问题只是为了好奇。

通过控制台

parseInt(1111111111111111,2) // 16 1's

返回

65535

parseInt(11111111111111111,2) // 17 1's

返回

65535

另外

//          16 1's                           17 1's
if(parseInt(1111111111111111,2) === parseInt(11111111111111111,2))

返回

true

诀窍在哪里?

由于

1 个答案:

答案 0 :(得分:8)

11111111111111111是一个数字的十进制数字,对于Javascript来说太大而无法精确编码。

parseInt(, 2)将停在第一个不是10的字符处,因此一旦精度降低,它就会停止解析。

将其更改为字符串,你会没事的。