Как вывести целые числа с ведущими нулями в JavaScript [duplicate]

Здесь есть несколько возможных методов . Если результирующие наборы все одинаковы, вы можете использовать метод INSERT ... EXEC. В противном случае может работать OPENQUERY.

438
задан Community 23 May 2017 в 12:10
поделиться

3 ответа

ПРИМЕЧАНИЕ : потенциально устарело. ECMAScript 2017 включает String.prototype.padStart

Вы запрашиваете нулевое заполнение? Не совсем округление. Вам придется преобразовать его в строку, поскольку числа не имеют смысла с начальными нулями. Что-то вроде этого ...

function pad(num, size) {
    var s = num+"";
    while (s.length < size) s = "0" + s;
    return s;
}

Или, если вы знаете, что никогда не будете использовать больше X нулей, это может быть лучше. Это предполагает, что вам никогда не нужно больше 10 цифр.

function pad(num, size) {
    var s = "000000000" + num;
    return s.substr(s.length-size);
}

Если вас интересуют отрицательные числа, вам придется убрать знак «-» и прочитать его.

705
ответ дан 22 November 2019 в 22:55
поделиться

ОБНОВЛЕНИЕ: Маленькая однострочная функция с использованием метода ES2017 String.prototype.padStart :

 функция zeroPad (число, разряды) {return String ( число) .padStart (места, '0')} console.log (zeroPad (5, 2)); // «05» console.log (zeroPad (5, 4)); // «0005» console.log (zeroPad (5, 6)); // «000005» console.log (zeroPad (1234, 2)); // "1234" 

Другой подход ES5:

function zeroPad(num, places) {
  var zero = places - num.toString().length + 1;
  return Array(+(zero > 0 && zero)).join("0") + num;
}

zeroPad(5, 2); // "05"
zeroPad(5, 4); // "0005"
zeroPad(5, 6); // "000005"
zeroPad(1234, 2); // "1234" :)
160
ответ дан 22 November 2019 в 22:55
поделиться

Просто для удовольствия (у меня было время убить), более сложная реализация, которая кэширует нулевую строку:

pad.zeros = new Array(5).join('0');
function pad(num, len) {
    var str = String(num),
        diff = len - str.length;
    if(diff <= 0) return str;
    if(diff > pad.zeros.length)
        pad.zeros = new Array(diff + 1).join('0');
    return pad.zeros.substr(0, diff) + str;
}

Если счетчик заполнения велик и функция вызывается достаточно часто, он фактически превосходит другие методы ...

2
ответ дан 22 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: