Как отформатировать числа, добавив 0 к однозначным числам? - PullRequest
242 голосов
/ 08 ноября 2011

Я хочу отформатировать число, чтобы оно состояло из двух цифр. Проблема возникает, когда передается 0 - 9, поэтому мне нужно отформатировать его в 00 - 09.

Есть ли в JavaScript средство форматирования чисел?

Ответы [ 29 ]

6 голосов
/ 04 июля 2013

Быстрый и грязный лайнер ....

function zpad(n, len) {
  return 0..toFixed(len).slice(2,-n.toString().length)+n.toString();
}
5 голосов
/ 13 ноября 2015

Я знаю, что это древний пост, но я хотел предоставить более гибкий и опциональный вариант решения.

Я немного экстраполировал принятый ответ и расширил объект Number javascript, чтобы обеспечить возможность настройкизаполнение нулями:

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"

Редактировать: Добавить код для предотвращения обрезки чисел длиннее, чем запрошенные цифры.

ПРИМЕЧАНИЕ: Это устарело во всем, кроме IE.Вместо этого используйте padStart().

5 голосов
/ 25 декабря 2018

Вот самое простое решение, которое я нашел: -

let num = 9; // any number between 0 & 99
let result = ( '0' + num ).substr( -2 );
5 голосов
/ 11 мая 2016

Улучшенная версия предыдущего ответа

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));
5 голосов
/ 06 декабря 2018

Вот очень простое решение, которое хорошо сработало для меня.

Сначала объявите переменную для хранения вашего числа.

var number;

Теперь преобразуйте число в строку и удерживайте ее в другой переменной;

var numberStr = number.toString();

Теперь вы можете проверить длину этой строки, если она меньше желаемой, вы можете добавить «ноль» в начале.

if(numberStr.length < 2){
      number = '0' + number;
}

Теперь используйте номер по желанию

console.log(number);
4 голосов
/ 08 ноября 2011

Нет встроенного средства форматирования чисел для JavaScript, но есть некоторые библиотеки, которые выполняют это:

  1. underscore.string предоставляет функцию sprintf (наряду со многимидругие полезные средства форматирования)
  2. javascript-sprintf , который подчеркивает .string заимствует из.
3 голосов
/ 09 мая 2017

Если вы хотите одновременно ограничить свои цифры:

function pad2(number) {
  number = (number < 10 ? '0' : '') + number;
  number = number.substring(0,2);
  return number;
}

Это также приведет к прерыванию любого значения, которое превышает две цифры.Я распространял это на решение Фанаура.

3 голосов
/ 01 декабря 2014

или

function zpad(n,l){
   return rep(l-n.toString().length, '0') + n.toString();
}

с

function rep(len, chr) { 
   return new Array(len+1).join(chr);
}
2 голосов
/ 31 января 2016

Вот простое рекурсивное решение, которое работает для любого количества цифр.

function numToNDigitStr(num, n)
{
    if(num >=  Math.pow(10, n - 1)) { return num; }
    return "0" + numToNDigitStr(num, n-1);
}
2 голосов
/ 28 августа 2014
<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $('#test').keypress(allowOnlyTwoPositiveDigts);
            });

            function allowOnlyTwoPositiveDigts(e){

                var test = /^[\-]?[0-9]{1,2}?$/
                return test.test(this.value+String.fromCharCode(e.which))
            }

        </script>
    </head>
    <body>
        <input id="test" type="text" />
    </body>
</html>
...