Mögliches Duplikat: Wie kann ich mit JavaScript einen nullgefüllten Wert erstellen?
Ich kann mit math.round auf x Nachkommastellen runden, aber gibt es eine Möglichkeit, links von der Dezimalstelle zu runden? z. B. wird aus 5 05, wenn ich 2 Stellen angebe
Hinweis: Möglicherweise veraltet. ECMAScript 2017 enthält String.prototype.padStart
Sie fragen nach einem Null-Padding? Nicht wirklich eine Rundung. Sie müssen es in einen String umwandeln, da Zahlen mit führenden Nullen keinen Sinn ergeben. Etwa so...
function pad(num, size) {
var s = num+"";
while (s.length < size) s = "0" + s;
return s;
}
Oder wenn Sie wissen, dass Sie nie mehr als X Nullen verwenden werden, könnte dies besser sein. Dies setzt voraus, dass Sie nie mehr als 10 Ziffern benötigen.
function pad(num, size) {
var s = "000000000" + num;
return s.substr(s.length-size);
}
Wenn Sie sich für negative Zahlen interessieren, müssen Sie das "-" entfernen und es auslesen.
UPDATE: Kleine Einzeiler-Funktion, die die ES2017 String.prototype.padStart
Methode verwendet:
function zeroPad(num, places) {
return String(num).padStart(places, '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"
Ein weiterer ES5-Ansatz:
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" :)
Nur zum Spaß (ich hatte etwas Zeit totzuschlagen), eine anspruchsvollere Implementierung, die die Null-Zeichenfolge zwischenspeichert:
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;
}
Wenn die Anzahl der Auffüllungen groß ist und die Funktion oft genug aufgerufen wird, übertrifft sie tatsächlich die anderen Methoden...