javascript - 为什么这是真的 : parseInt(1111111111111111, 2) === parseInt(11111111111111111,2)

标签 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

诀窍在哪里?

谢谢

最佳答案

11111111111111111 是十进制数字字面值,表示对于 Javascript 而言太大而无法精确编码的数字。

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

将其更改为字符串即可。

关于javascript - 为什么这是真的 : parseInt(1111111111111111, 2) === parseInt(11111111111111111,2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479214/

相关文章:

javascript - 如何在鼠标悬停时将焦点设置到输入元素(搜索框)?

javascript ArrayBuffer,它是做什么用的?

javascript - 如何使用 javascript 搜索数组中的字符串而不使用正则表达式

javascript - 使用 knockoutjs 延迟加载图像

javascript - ng-click 没有在 angularjs 中触发?

javascript - Angularjs 字节数组到 Blob

JavaScript 变量在进入 for 循环时返回 null

javascript - AppendChild 在 `for` 循环或 `forEach `

javascript - 如何使用链接的侧边栏来更改网页中的图像?

javascript - Firestore实时监听器和成本