web-dev-qa-db-fra.com

Comment sortir des entiers avec des zéros en JavaScript

Duplicate possible:
Comment créer une valeur Zerofilled en utilisant JavaScript?

Je peux arrondir à x le nombre de décimales avec math.round, mais existe-t-il un moyen d’arrondir à gauche de la décimale? par exemple 5 devient 05 si je spécifie 2 places

443
chris

NOTE: potentiellement obsolète. ECMAScript 2017 comprend String.prototype.padStart

Vous demandez zéro padding? Pas vraiment arrondi. Vous devrez le convertir en chaîne, car les nombres n'ont pas de sens avec les zéros non significatifs. Quelque chose comme ça...

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

Ou si vous savez que vous n'utiliserez jamais plus de X chiffres, cela pourrait être mieux. Cela suppose que vous ne voudrez jamais plus de 10 chiffres.

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

Si vous vous souciez des nombres négatifs, vous devrez enlever le "-" et le relire.

684
InfinitiesLoop

Vous pouvez étendre l'objet Number:

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

Exemples:

(9).pad();  //returns "09"

(7).pad(3);  //returns "007"
209
Mild Fuzz

Une autre approche:

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" :)
145
CMS

De https://Gist.github.com/1180489

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

Avec des commentaires:

function pad(
  a, // the number to convert 
  b // number of resulting characters
){
  return (
    1e15 + a + // combine with large number
    "" // convert to string
  ).slice(-b) // cut leading "1"
}
62
dave1010
function zfill(num, len) {return (Array(len).join("0") + num).slice(-len);}
6
ithinc

Juste pour le fun (j'ai eu du temps à perdre), une implémentation plus sophistiquée qui met en cache la chaîne zéro:

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

Si le nombre de bourrages est important et que la fonction est appelée assez souvent, elle surpasse les autres méthodes ...

2
Christoph