我想用零作为十进制数来评估数字开头。
例如,让我们定义 convertToDec
convertToDec(010) => 10
convertToDec(0010) => 10
convertToDec(0123) => 123
等..
因为所有js数字都以0开头在基数8中进行评估,所以我试着这样做:
function convertToDec(num){
return parseInt(num.toString(), 10);
}
但 toString 功能会解析基数为8的数字。
有什么建议吗?
谢谢!
答案 0 :(得分:4)
如果你字面上在JavaScript中编写0010
,那么它将被视为八进制数。这就是解析器的工作原理。
来自MDN's docs:
因此,当您编写convertToDec(0010)
时,您的浏览器会将其解释为convertToDec(8)
。由于您使用了“八进制文字”,因此已经已“转换”为8
。
如果您想要文字值"0010"
,那么您需要使用字符串。
parseInt("0010", 10); // 10
答案 1 :(得分:2)
您需要使用字符串参数调用convertToDec
,而不是数字。
function convertToDec(num){
return parseInt(num, 10);
}
alert(convertToDec("010"));
如果你给它一个数字作为参数,那么这个数字已经被Javascript解释器解析了,该函数无法取回你最初输入的内容。 JS解释器将以0
开头的数字解析为八进制。