如何解析一个数字作为基数10?

时间:2013-04-01 18:28:20

标签: javascript

my last question中,我发现前导0的数字被解析为八进制数。在this question中,the answer说:

  

这是一个常见的Javascript问题,有一个简单的解决方案:

     

只需指定基数或“基数”,如下所示:

     

parseInt函数( '08',10); // 8

这有效,但只有在数字用引号括起来的情况下才有效。请考虑以下示例:

var test = 0132;
alert(parseInt(test, 10));

JSFiddle:http://jsfiddle.net/VU96M/2/

输出是“90”,而不是“132”。

因此,正如您所看到的,解决方案在这种情况下不起作用。

如果我将一个变量作为参数传递给一个函数,或者从一个函数返回,它具有前导零,如上面的变量test,我如何将其解析为基数为10的值?

3 个答案:

答案 0 :(得分:2)

strict mode中,JavaScript不允许您执行此类操作 - 定义八进制文字 - 而您将获得异常。开始使用严格模式作为JavaScript代码的默认模式是一个很好的做法。

另外,因为在非严格模式下,如果将test变量定义为八进制文字或十进制,则您没有线索,因此如果test.toString(8) test会给您带来不同的结果定义为0132132

答案 1 :(得分:1)

您可以将其更改回基数为8的文字,以便返回基数为10的版本:

console.log( +test.toString(8) ); // 132
//                 ^^^^^^^^^^^

Demo

答案 2 :(得分:1)

0132在传递给parseInt之前被视为八进制,因此您实际上是在调用parseInt(90,10)

请改为尝试:

var test = 0132;
parseInt((test).toString(8)); // 132