为什么这是真的:parseInt(1111111111111,2)===parseInt(111111111111,2)
Why this is true: parseInt(1111111111111111,2) === parseInt(11111111111111111,2)
这个问题只是为了好奇。
通过控制台
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)
将在不是1
或0
的第一个字符处停止,因此一旦精度降低,它将停止解析。
把它换成绳子,你就没事了。
相关文章:
- 关于 Javascript 中 parseInt() 的说明
- 为什么这是真的:parseInt(1111111111111,2)===parseInt(111111111111,2)
- jquery中出现NaN错误.已经尝试过ParseInt,但仍然不起作用
- parseInt("08") returns 0
- parseInt()方法如何返回整数
- parseInt的行为很奇怪——可能吧
- JS parseInt带逗号的字符串
- 数组上的ParseInt()方法
- 为什么parseInt()比Firefox中的*1慢得多
- 为什么不'将字符串转换为int不正确(parseInt)
- JS parseInt() issue
- parseInt() 出乎意料地等同于 NaN
- Javascript parseInt 函数不起作用
- 在数组上应用 parseInt 会产生奇怪的结果
- 在 JavaScript 中使用 parseFloat() 或 parseInt() 和正则表达式(转换 CSV 文件)
- 即使使用 parseInt,我也无法从输入元素中获取数值
- 为什么parseInt('08')给出0,而parseInt('07')则给出7
- 使用parseInt将整数值添加到字符串中,而不处理动态添加的内容
- 货币字段上的 parseInt 返回 NaN
- 为什么parseInt(“123abcd”)和parseInt(“abcd123”)的结果在JavaScript中不同