JavaScript-防止八进制转换
我把一个数字输入作为一个参数,并试图解释前导零。但在我对数字做任何事情之前,javascript似乎先将数字转换成八进制。到目前为止,解决这个问题的唯一方法是,如果我最初将数字作为字符串传递,但我希望在传递之后会有另一种方法来转换它?到目前为止,已尝试(使用提醒我八进制行为的JavaScript-防止八进制转换,javascript,regex,numbers,octal,Javascript,Regex,Numbers,Octal,我把一个数字输入作为一个参数,并试图解释前导零。但在我对数字做任何事情之前,javascript似乎先将数字转换成八进制。到目前为止,解决这个问题的唯一方法是,如果我最初将数字作为字符串传递,但我希望在传递之后会有另一种方法来转换它?到目前为止,已尝试(使用提醒我八进制行为的017): 如此给定 function(numb) { if (typeof numb === number) { // remove leading zeroes and convert to decimal } els
017
):
如此给定
function(numb) {
if (typeof numb === number) {
// remove leading zeroes and convert to decimal
}
else {
// use parseInt
}
}
“严格使用”似乎也不能像一些老帖子所建议的那样解决这个问题。有什么想法吗
数字的输入方法。由于您收到一个字符串,parseInt(..,10)
将始终足够017
仅在源代码中按字面形式写入时(或缺少parseInt
的基数参数时)才解释为八进制
var oct = 017; // 15
parseInt(oct.toString(8), 10) // 17
虽然您可能不知道输入最初是否解释为八进制,但这不是您应该做的事情JavaScript解释所有以0开头的数字,并将所有八进制数字都包含为八进制-例如017将是八进制,但019不是。如果您希望您的数字为十进制,则
1.省略前导的0
2.继续使用parseInt() 原因是JavaScript使用了一些隐式转换,并根据数字选择最可能的情况。在JavaScript中,前导0表示数字是八进制的信号。如果需要前导0,则必须接受该规则并使用parseInt()
如果您在脚本中手动键入数字,则不使用前导零(如果数字是有效的八进制,则隐式地将其视为八进制-如果不是,则将其视为十进制)。如果您将数字作为字符串,则只需使用
+
运算符转换为(十进制)数字
console.log(+“017”)
if(021<019)console.log('Paradox')代码>你如何接受一个数字输入,而不是以字符串的形式输出。。。?!数字
不能有“前导零”。对不起,“数字输入”的意思是我给函数传递一个类似017的数字,而不是“017”。这只是出于兴趣,而不是一个要求,因为我正在考虑发送一些(可能是偶然)有前导零的数字。你的第二个答案也帮了大忙,我没想过要这么做。谢谢你的回答!如果在源代码中编写017
,作为函数的参数,则编写的是15。只是用不同的符号。数字没有前导零。写下你的意思,不要让你的代码适应你实际上并不想要的东西。
var oct = 017; // 15
parseInt(oct.toString(8), 10) // 17