这个问题只是为了好奇。
通过控制台
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
诀窍在哪里?
由于
答案 0 :(得分:8)
11111111111111111
是一个数字的十进制数字,对于Javascript来说太大而无法精确编码。
parseInt(, 2)
将停在第一个不是1
或0
的字符处,因此一旦精度降低,它就会停止解析。
将其更改为字符串,你会没事的。