将数字格式化为两位长度?

38

我有一个小于100的整数,并且使用JavaScript在HTML页面上打印。如何格式化该整数,使其恰好为两个数字?例如:

01
02
03
...
09
10
11
12
...


6
是的,这是第二句话,对吗? - maerics
14个回答

62

更新

本回答是在2011年撰写的。请查看liubiantao的回答获取2021年版本。

原始内容

function pad(d) {
    return (d < 10) ? '0' + d.toString() : d.toString();
}

pad(1);  // 01
pad(9);  // 09
pad(10); // 10

如果是负数呢? - 4 Leave Cover
非常有帮助,节省了大量时间。 - Mehadi Hassan
这个方法同样适用于十六进制,只需要进行一个简单的更改:function pad(d) { return (d < 16) ? '0' + d.toString() : d.toString(); } - Kevin

36
String("0" + x).slice(-2);

其中x是你的数字。


简洁的代码很棒。我喜欢长度被参数化,这样你可以动态地使用它来进行高阶数字扩展。 - Cody

33

1
只有在使用ES2017时才能这样做。 - WesternGun
最简洁的答案 - buddhiv

11

只需使用以下简短的函数即可获得所需的结果:

function pad2(number) {
    return (number < 10 ? '0' : '') + number
}

4
在JavaScript中,在数字左侧填充数字的一种直接方法是通过计算以10为底的对数来确定数字的位数。例如:
function padLeft(positiveInteger, totalDigits) {
  var padding = "00000000000000";
  var rounding = 1.000000000001;
  var currentDigits = positiveInteger > 0 ? 1 + Math.floor(rounding * (Math.log(positiveInteger) / Math.LN10)) : 1;
  return (padding + positiveInteger).substr(padding.length - (totalDigits - currentDigits));
}

舍入因子解决了一个问题,即无法得到10的幂的精确对数,例如Math.log(1000) / Math.LN10 == 2.9999999999999996。当然,应该添加参数验证。

3
// Return a string padded
function FormatMe(n) {
   return (n<10) ? '0'+n : n;
}

3

function leftFillNum(num, targetLength) {
  return num.toString().padStart(targetLength, '0');
}

console.log(leftFillNum(3,2)); // ==> returns '03'
console.log(leftFillNum(33,2)); // ==> returns '33'
console.log(leftFillNum(3,4)); // ==> returns '0003'
console.log(leftFillNum(33,5)); // ==> returns '00033'


2
function padLeft(a, b) {
    var l = (a + '').length;
    if (l >= b) {
        return a + '';
    } else {
        var arr = [];
        for (var i = 0; i < b - l ;i++) {
            arr.push('0');
        }
        arr.push(a);
        return arr.join('');
    }
}

1
我通常使用这个函数。
function pad(n, len) {
    let l = Math.floor(len)
    let sn = '' + n
    let snl = sn.length
    if(snl >= l) return sn
    return '0'.repeat(l - snl) + sn
}


使用示例

pad(1, 1)    // ==> returns '1' (string type)
pad(384, 5)  // ==> returns '00384'
pad(384, 4.5)// ==> returns '0384'
pad(5555, 2) // ==> returns '5555'

1
const threeDigit = num => num.toString().padStart(3 , '0');

该函数将数字转换为字符串,然后返回该数字的三位版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接