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

Fed*_*ico 8 javascript

这个问题只是为了好奇.

通过控制台

parseInt(1111111111111111,2) // 16 1's
Run Code Online (Sandbox Code Playgroud)

回报

65535
Run Code Online (Sandbox Code Playgroud)

parseInt(11111111111111111,2) // 17 1's
Run Code Online (Sandbox Code Playgroud)

回报

65535
Run Code Online (Sandbox Code Playgroud)

//          16 1's                           17 1's
if(parseInt(1111111111111111,2) === parseInt(11111111111111111,2))
Run Code Online (Sandbox Code Playgroud)

回报

true
Run Code Online (Sandbox Code Playgroud)

诀窍在哪里?

谢谢

SLa*_*aks 8

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

parseInt(, 2)将停止在第一个不是1或没有的字符0,因此一旦精度降低就会停止解析.

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

  • @ william.taylor.09 java!================= javascript (3认同)