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

JavaScript中有数字格式化器吗?


当前回答

编辑(2021):

不再需要像这样手工格式化数字了。这个答案写在很久以前——在遥远的2011年,那时IE很重要,巴别塔和捆绑器只是一个美好的、充满希望的梦想。

我认为删除这个答案是错误的;然而,如果你发现自己在这里,我想把你的注意力转移到这个问题的投票第二高的答案。

它将向您介绍使用. tolocalestring()与选项参数{minimumIntegerDigits: 2}。令人兴奋的东西。下面我用这个方法从我最初的答案中重新创建了所有三个例子,以方便你。

[7, 7.5, -7.2345].forEach(myNumber => { let formattedNumber = myNumber.toLocaleString('en-US', { 最小整数位数:2, 使用分组:假 }) console.log( '输入: ' + 我的号码 + '\n' + '输出: ' + 格式化数字 ) })


最初的回答:

我发现的最好的方法是这样的:

(注意,这个简单版本只适用于正整数)

var myNumber = 7; var formattedNumber = (“0” + myNumber).slice(-2); 控制台.log(格式化编号);

对于小数,您可以使用这个代码(尽管它有点草率)。

var myNumber = 7.5; var dec = myNumber - Math.floor(myNumber); 我的号码 = 我的号码 - 十进制; var formattedNumber = (“0” + myNumber).slice(-2) + dec.toString().substr(1); 控制台.log(格式化编号);

最后,如果必须处理负数的可能性,最好存储符号,将格式应用于数字的绝对值,并在事后重新应用符号。注意,此方法没有将数字限制为2位。相反,它只限制小数左边的数字(整数部分)。(决定符号的线在这里找到)。

var myNumber = -7.2345; var 符号 = myNumber?myNumber<0?-1:1:0; 我的号码 = 我的号码 * 符号 + '';穷人的绝对价值 var dec = myNumber.match(/\.\d+$/); var int = myNumber.match(/^[^\.]+/); var 格式化数字 = (符号 < 0 ?'-' : '') + (“0” + int).slice(-2) + (dec !== null ? dec : ''); 控制台.log(格式化编号);

其他回答

    function colorOf(r,g,b){
  var f = function (x) {
    return (x<16 ? '0' : '') + x.toString(16) 
  };

  return "#" +  f(r) + f(g) + f(b);
}

这是一个非常好的和简短的解决方案:

smartTime(time) {
  return time < 10 ? "0" + time.toString().trim() : time;
}

对于任何想要有时间差并得到负数结果的人来说,这是一个很好的例子。垫(3)=“03”,垫(2)= " -02 ",垫(-234)= " -234 "

pad = function(n){
  if(n >= 0){
    return n > 9 ? "" + n : "0" + n;
  }else{
    return n < -9 ? "" + n : "-0" + Math.abs(n);
  }
}

之前答案的改进版本

函数atLeast2Digit (n) { n = parseInt(n);/ /交货。如果已经经过'05',它将被转换为数字5 Var ret = n > 9 ?" + n: "0" + n; 返回受潮湿腐烂; } alert (atLeast2Digit (5));

如果数字大于9,则将数字转换为字符串(一致性)。否则,加一个零。

function n(n){
    return n > 9 ? "" + n: "0" + n;
}

n( 9); //Returns "09"
n(10); //Returns "10"
n(999);//Returns "999"