如何通过将0添加到一位数字来格式化数字?

Kei*_*wer 270 javascript number-formatting

我想格式化一个数字有两位数.0- 9传递时会导致问题,所以我需要将其格式化为00- 09.

JavaScript中是否有数字格式化程序?

Jos*_*kle 534

我发现的最好的方法是如下所示(请注意,这个简单的版本仅适用于正整数):

var myNumber = 7;
var formattedNumber = ("0" + myNumber).slice(-2);
console.log(formattedNumber);
Run Code Online (Sandbox Code Playgroud)

对于小数,您可以使用此代码(虽然它有点草率).

var myNumber = 7.5;
var dec = myNumber - Math.floor(myNumber);
myNumber = myNumber - dec;
var formattedNumber = ("0" + myNumber).slice(-2) + dec.toString().substr(1);
console.log(formattedNumber);
Run Code Online (Sandbox Code Playgroud)

最后,如果您必须处理负数的可能性,最好存储符号,将格式应用于数字的绝对值,然后在事后重新应用符号.请注意,此方法不会将数字限制为2位总数.相反,它只限制小数左边的数字(整数部分).(确定符号的行在此处找到:javascript中的Number.sign())

var myNumber = -7.2345;
var sign = myNumber?myNumber<0?-1:1:0;
myNumber = myNumber * sign + ''; // poor man's absolute value
var dec = myNumber.match(/\.\d+$/);
var int = myNumber.match(/^[^\.]+/);

var formattedNumber = (sign < 0 ? '-' : '') + ("0" + int).slice(-2) + (dec !== null ? dec : '');
console.log(formattedNumber);
Run Code Online (Sandbox Code Playgroud)

  • @KeithPower演示没有说明这一点 (4认同)

Rob*_*b W 117

如果该数字高于9,则将数字转换为字符串(一致性).否则,添加零.

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

n( 9); //Returns "09"
n(10); //Returns "10"
n(999);//Returns "999"
Run Code Online (Sandbox Code Playgroud)

  • 那么消极时间呢.0-1:20:00 (4认同)

小智 111

使用任何数字的toLocaleString()方法.因此对于数字6,如下所示,您可以获得所需的结果.

(6).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})
Run Code Online (Sandbox Code Playgroud)

将生成字符串'06'.

  • 这比用手砍弦更好_无限.更简洁,如果您的页面可能在美国境外使用,您可能需要将其调整为:`(6).toLocaleString(undefined,{minimumIntegerDigits:2})` (16认同)
  • 有效,但您需要 IE &gt;= 11。 (3认同)
  • 在IE 9中使用它会创建6.00而不是06. (2认同)
  • 我全都无视IE,但它在移动浏览器中得不到很好的支持.src:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString (2认同)

tim*_*ood 49

这是我经常使用的简单数字填充函数.它允许任何数量的填充.

function leftPad(number, targetLength) {
    var output = number + '';
    while (output.length < targetLength) {
        output = '0' + output;
    }
    return output;
}
Run Code Online (Sandbox Code Playgroud)

例子:

leftPad(1, 2) // 01
leftPad(10, 2) // 10
leftPad(100, 2) // 100
leftPad(1, 3) // 001
leftPad(1, 8) // 00000001
Run Code Online (Sandbox Code Playgroud)


fit*_*rec 28

您可以使用以下padStart方法:

更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

检查这个例子:

function n(num, len = 2) {
  return `${num}`.padStart(len, '0');
}

console.log(n( 9));   //print "09"
console.log(n(10));   //print "10"
console.log(n(999));  //print "999"
console.log(n(999,6));//print "000999"
Run Code Online (Sandbox Code Playgroud)


Lif*_*ack 26

在您可以使用的所有现代浏览器中

numberStr.padStart(2, "0");
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

function zeroPad(numberStr) {
  return numberStr.padStart(2, "0");
}

var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

numbers.forEach(
  function(num) {
    var numString = num.toString();
    
    var paddedNum = zeroPad(numString);

    console.log(paddedNum);
  }
);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这在 IE 中根本不受支持 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart#Browser_compatibility (2认同)

小智 12

("0" + (date.getMonth() +?1)).slice(-2);
("0" + (date.getDay())).slice(-2);
Run Code Online (Sandbox Code Playgroud)


Jee*_*Mok 10

@ Lifehack的回答对我非常有用; 在哪里我认为我们可以在一行中为正数做

 String(input).padStart(2, '0');
Run Code Online (Sandbox Code Playgroud)


小智 9

你可以做:

function pad2(number) {
   return (number < 10 ? '0' : '') + number
}
Run Code Online (Sandbox Code Playgroud)

例:

document.write(pad2(0) + '<br />');
document.write(pad2(1) + '<br />');
document.write(pad2(2) + '<br />');
document.write(pad2(10) + '<br />');
document.write(pad2(15) + '<br />');
Run Code Online (Sandbox Code Playgroud)

结果:

00
01
02
10
15
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 7

看来你可能有一个字符串,而不是一个数字.用这个:

var num = document.getElementById('input').value,
    replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;
Run Code Online (Sandbox Code Playgroud)

这是一个例子:http://jsfiddle.net/xtgFp/


小智 6

快速和脏的一个班轮....

function zpad(n, len) {
  return 0..toFixed(len).slice(2,-n.toString().length)+n.toString();
}
Run Code Online (Sandbox Code Playgroud)


小智 6

这很简单,效果很好:

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


Edg*_*256 6

这是一个非常简单的解决方案,对我来说效果很好。

首先声明一个变量来保存您的电话号码。

var number;
Run Code Online (Sandbox Code Playgroud)

现在将数字转换为字符串并将其保存在另一个变量中;

var numberStr = number.toString();
Run Code Online (Sandbox Code Playgroud)

现在,您可以测试此字符串的长度,如果该字符串小于期望的长度,则可以在开头添加“零”。

if(numberStr.length < 2){
      number = '0' + number;
}
Run Code Online (Sandbox Code Playgroud)

现在根据需要使用数字

console.log(number);
Run Code Online (Sandbox Code Playgroud)


小智 6

这是我找到的最简单的解决方案:-

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


use*_*678 6

我的版本:

`${Math.trunc(num / 10)}${Math.trunc(num % 10)}`;
Run Code Online (Sandbox Code Playgroud)

const func = (num) => `${Math.trunc(num / 10)}${Math.trunc(num % 10)}`;

const nums = [1, 3, 5, 6, 8, 9, 10, 20, 56, 80];
nums.forEach(num => console.log(func(num)));
Run Code Online (Sandbox Code Playgroud)


Noa*_*can 5

我知道这是一篇古老的帖子,但我想提供更灵活的OO解决方案选项.

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

Number.prototype.zeroPad = function(digits) {
  var loop = digits;
  var zeros = "";
  while (loop) {
    zeros += "0";
    loop--;
  }
  return (this.toString().length > digits) ?
    this.toString() : (zeros + this).slice(-digits);
}
var v = 5;
console.log(v.zeroPad(2)); // returns "05"
console.log(v.zeroPad(4)); // returns "0005"
Run Code Online (Sandbox Code Playgroud)

编辑:添加代码以防止截断数字超过您请求的数字.

注意:除了IE之外,这已经过时了.请padStart()改用.


hac*_*mer 5

先前答案的改进版本

function atLeast2Digit(n){
    n = parseInt(n); //ex. if already passed '05' it will be converted to number 5
    var ret = n > 9 ? "" + n: "0" + n;
    return ret;
}

alert(atLeast2Digit(5));
Run Code Online (Sandbox Code Playgroud)