在控制台中执行一些随机表达式时,我发现了
010 + ""
返回8
(甚至011,0100 ..通过考虑八进制数系统返回结果)
如果我想将数字010
转换为字符串"010"
,我该怎么办?不仅适用于010
,也适用于每个相似的数字。我设法为这个here找到了一种类似的解释。但这并没有解释如何将其转换为精确的字符串版本。
答案 0 :(得分:6)
在Javascript 010
中是八进制文字,并在十进制文字中转换为8。事实上,你应该避免它,因为严格的模式不允许使用它。
除了解析函数体字符串之外,没有办法区分八进制和十进制表示法:)
答案 1 :(得分:5)
首先通过调用toString()
方法获取字符串,其中基数在这种情况下为8
Number(010).toString(8); //outputs "10"
它的工作原理没有数字包装,
010.toString(8); //outputs "10"
如果您知道原始数字的长度
,请使用此方法填充0function pad(n,digits){return n<Math.pow(10, digits) ? '0'+n : n}
所以
pad(Number(010).toString(8),3); //3 is the number of digits
答案 2 :(得分:3)
使用以下代码:
"0" + (010).toString(8) // "010"
"0" + (0111).toString(8) // "0111"
更通用的解决方案:
function toStringOctal(number) {
return "0" + number.toString(8);
}
toStringOctal(010) // return "010"
但请注意,严格模式八进制表示法0<number>
不允许使用。
答案 3 :(得分:1)
var num = 10;
var string = "0" + num.toString();
console.log(string);//gives you "010"
正如本文评论中提到的,它不会直接转换010,但会构建一个字符串。不是最优雅的解决方案。
答案 4 :(得分:1)
如果您希望将多个相似的数字转换为字符串,您还可以构建一个简单的函数来完成调用时的工作:
function convertSomething(number) {
var string = "" + number;
return string
}
然后您可以随时调用转换功能。