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
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.
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"
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" :)
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"
}
function zfill(num, len) {return (Array(len).join("0") + num).slice(-len);}
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 ...