8

Как вывести числа сLeading Zero в JavaScript?

36

Проблема с добавлением нулей в начале числа

Я столкнулся с проблемой, связанной с форматированием чисел. Мне нужно добавитьLeading нули к числам, чтобы конечная строка имела фиксированную длину.

Например, если у меня есть число 5, я хочу, чтобы оно превратилось в строку "05", если я укажу, что длина должна быть равной 2. Как я могу это сделать?

Заранее благодарю за помощь!

4 ответ(ов)

2

Вы можете расширить объект Number, добавив метод pad, который позволяет дополнить число нулями до заданной длины. Вот пример реализации:

Number.prototype.pad = function(size) {
    var s = String(this);
    while (s.length < (size || 2)) {s = "0" + s;}
    return s;
}

Примеры использования:

(9).pad();  // возвращает "09"

(7).pad(3);  // возвращает "007"

Этот метод преобразует число в строку и добавляет ведущие нули, пока длина строки не достигнет указанного размера. Если размер не указан, метод по умолчанию выравнивает строку до 2 символов.

0

Вот перевод кода и комментариев на русский язык в стиле ответа на StackOverflow:

function pad(a, b) {
  return(1e15 + a + '').slice(-b);
}

С комментариями:

function pad(
  a, // число, которое нужно преобразовать 
  b // количество символов в результате
) {
  return (
    1e15 + a + // складываем с большим числом
    "" // преобразуем в строку
  ).slice(-b) // обрезаем ведущий "1"
}

Объяснение работы функции:

Эта функция pad принимает два аргумента: число a, которое вы хотите преобразовать, и число b, которое определяет, сколько символов должно быть в итоговой строке.

  1. 1e15 + a - складываем a с очень большим числом, чтобы гарантировать, что при конкатенации появится достаточно символов.
  2. + '' - преобразует результат в строку.
  3. .slice(-b) - обрезает строку, оставляя только последние b символов, тем самым удаляя ведущие символы, такие как "1".

Таким образом, вы получаете строку длиной b, содержащую число a, дополненное нулями слева, если это необходимо.

0

Функция zfill в JavaScript предназначена для удобного дополнения числа нулями слева до заданной длины. Вот как она работает:

function zfill(num, len) {
    return (Array(len).join("0") + num).slice(-len);
}

Объяснение:

  1. Array(len): Создает массив длиной len. Важно отметить, что это массив, заполненный undefined, так что просто создать его не достаточно.

  2. Array(len).join("0"): Используя метод join, мы соединяем все элементы массива в строку, вставляя между ними символ "0". В результате получается строка из len нулей.

  3. (Array(len).join("0") + num): Затем мы конкатенируем строку нулей с переданным числом num. Если num 0, это возрастет до строки "000...0" + "0", например, "0000" для len = 4.

  4. .slice(-len): Наконец, мы используем метод slice, чтобы взять последние len символов получившейся строки. Это позволяет отрезать лишние нули, если значение num больше или равно 10...0 в соответствии с длиной.

Пример использования:

console.log(zfill(5, 3)); // "005"
console.log(zfill(42, 5)); // "00042"
console.log(zfill(1234, 2)); // "34"

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

0

Вот интересная реализация функции дополнения строки нулями, которая использует кэширование для строки нулей:

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;
}

Если значение diff (количество необходимых дополнений) велико и функция вызывается достаточно часто, то такая реализация действительно показывает лучшую производительность по сравнению с другими методами.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь