我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。

JavaScript中有数字格式化器吗?


当前回答

这是我的版本。可以很容易地适应其他场景。

function setNumericFormat(value) {
    var length = value.toString().length;
    if (length < 4) {
        var prefix = "";
        for (var i = 1; i <= 4 - length; i++) {
            prefix += "0";
        }
        return prefix + value.toString();
    }
    return  value.toString();
}

其他回答

这很简单,而且效果很好:

function twoDigit(number) {
  var twodigit = number >= 10 ? number : "0"+number.toString();
  return twodigit;
}

这是我发现的最简单的解决方法:-

let num = 9; // any number between 0 & 99
let result = ( '0' + num ).substr( -2 );

我知道这是一个古老的帖子,但我想提供一个更灵活和面向对象的解决方案选项。

我已经推断了接受的答案,并扩展了javascript的Number对象,以允许可调的零填充:

Number.prototype.zeroPad =函数(数字){ Var循环=数字; Var 0 = ""; While(循环){ 零+= "0"; 循环,; } 返回(this.toString()。长度为>位数)? this. tostring ():(0 + this).slice(-digits); } Var v = 5; console.log (v.zeroPad (2));//返回"05" console.log (v.zeroPad (4));//返回"0005"

编辑:添加代码以防止截断比要求的数字更长的数字。

注意:除了IE,这在其他所有浏览器中都是过时的。请改用padStart()。

JavaScript没有内置的数字格式化器,但是有一些库可以实现这个功能:

下划线。String提供了sprintf函数(以及许多其他有用的格式化方法) Javascript-sprintf,其中下划线。字符串借用。

在任意数字中使用toLocaleString()方法。因此,对于数字6,如下所示,您可以得到所需的结果。

(6).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})

将生成字符串'06'。