ParseInt() 奇怪的八进制行为
ParseInt() strange octal behavior
我必须将一些输入数据转换为整数。
我找到了 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'))
您应该使用字符串和基数的组合来获得正确的值。这是一个例子:
parseInt(01234) // returns 668
parseInt('01234', 10) // returns 1234
我必须将一些输入数据转换为整数。
我找到了 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'))
您应该使用字符串和基数的组合来获得正确的值。这是一个例子:
parseInt(01234) // returns 668
parseInt('01234', 10) // returns 1234