javascript - ParseInt() 奇怪的八进制行为

标签 javascript parseint

<分区>

我必须将一些输入数据转换为整数。 我找到了 parseInt() 函数。
如果输入是字符串,一切都很好:

console.log(parseInt("123")) //123

即使字符串以0开头:

console.log(parseInt("0123")) //123

但是如果一个数字以0开头,它会给出83!

    console.log(parseInt(0123)) //83 instead of 123

我听说这是因为八进制行为 ( Javascript parseInt() with leading zeros ),所以我给了它一个基数参数:

    console.log(parseInt(0123,10)) //83!!!

还是83!!!

然后,最奇怪的是:
我想:八进制的123一定要给八进制的123! 但它给出了 NaN:

console.log(parseInt(0123, 8)) //NaN

为什么会出现这种奇怪的行为?!我该如何解决?

谢谢!!!

最佳答案

在此代码中,您可以定义一个八进制格式的数字(而不是字符串),然后将其传递给 parseInt。然后 parseInt 将该数字转换为字符串 ("83"),并再次解析它。

如果将字符串传递给 parseInt,您将获得预期的结果:

console.log(parseInt('0123'))

关于javascript - ParseInt() 奇怪的八进制行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53898723/

相关文章:

javascript - 使用硬件加速时避免在 Chrome 中的图像上显示 "black squares"?

javascript - ember-konacha-rails isValid AssertionError

javascript - 如何使用 Javascript 计算屏幕位置?

java - 异常和parseInt

javascript - jQuery 选项卡动画由 Controller 暂停和播放

javascript - 使用 javascript 或 jquery 删除 html 表格行?

javascript - 为什么 arr.map(parseInt) 在 JavaScript 中不起作用?

java - 读取文件时出现数字格式异常

javascript - 字符串到整数未正确定义

javascript - 为什么我的 parseInt 函数没有将我的字符串转换为整数?