如何在javascript中将整数格式化为特定长度?

Kip*_*Kip 38 javascript formatting

我在Javascript中有一个数字,我知道它不到10000而且也是非负数.我想将它显示为一个四位数字,带有前导零.有没有比以下更优雅的东西?

if(num<10) num="000"+num;
else if(num<100) num="00"+num;
else if(num<1000) num="0"+num;
Run Code Online (Sandbox Code Playgroud)

我想要一些内置于Javascript中的东西,但我似乎找不到任何东西.

Sim*_*gét 78

我想到的最简单的方法是:

("000" + num).slice(-4)
Run Code Online (Sandbox Code Playgroud)

填充数字是一个字符串.
向字符串添加数字时,会将其转换为字符串.
字符串具有方法切片,可以重新调整字符串的固定长度.
如果length为负,则返回的字符串将从字符串的末尾开始切片.

去测试:

var num=12;
console.log(("000" + num).slice(-4)); // Will show "0012"
Run Code Online (Sandbox Code Playgroud)

(因为这只适用于最多4位数的正整数)

  • 这太简单了.竖起大拇指 (3认同)
  • 您可以使用 `repeat` - `(n, length) =&gt; ("0".repeat(length) + n).slice(-length)` 参数化长度。 (2认同)

Chr*_*ann 42

我不认为JavaScript语言中有任何"构建"用于执行此操作.这是一个简单的函数:

function FormatNumberLength(num, length) {
    var r = "" + num;
    while (r.length < length) {
        r = "0" + r;
    }
    return r;
}


FormatNumberLength(10000, 5) outputs '10000'
FormatNumberLength(1000, 5)  outputs '01000'
FormatNumberLength(100, 5)   outputs '00100'
FormatNumberLength(10, 5)    outputs '00010'
Run Code Online (Sandbox Code Playgroud)

  • 我宁愿调用num.toString()方法. (7认同)

Can*_*var 16

这可能有所帮助:

String.prototype.padLeft = function (length, character) { 
     return new Array(length - this.length + 1).join(character || '0') + this; 
}

var num = '12';

alert(num.padLeft(4, '0'));
Run Code Online (Sandbox Code Playgroud)


RJG*_*ngs 13

由于ES2017填充到最小长度可以使用 String.prototype.padStartString.prototype.padEnd完成:

let num = 3
let str = num.toString().padStart(3, "0")
console.log(str) // "003"
Run Code Online (Sandbox Code Playgroud)

或者,如果只有float的整个部分应该是固定长度:

let num = 3.141
let arr = num.toString().split(".")
arr[0] = arr[0].padStart(3, "0")
let str = arr.join(".")
console.log(str) // "003.141"
Run Code Online (Sandbox Code Playgroud)


Fra*_*ger 6

一个有趣(但有趣)的方式用零前缀数字:

function FormatInteger(num, length) {

    return (num / Math.pow(10, length)).toFixed(length).substr(2);
}
Run Code Online (Sandbox Code Playgroud)


cit*_*kid 5

2023年

国际化 API 的数字格式甚至可以做到这一点:

const digits3 = 
    new Intl.NumberFormat(
        undefined, 
        { minimumIntegerDigits: 3, maximumSignificantDigits: 3 });

digits3.format(42);
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat