NOTE : Potentiellement périmé. ECMAScript 2017 comprend String.prototype.padStart
.
Vous devrez convertir le nombre en chaîne de caractères, car les nombres n'ont pas de sens avec des zéros en tête. Quelque chose comme ça :
function pad(num, size) {
num = num.toString();
while (num.length < size) num = "0" + num;
return num;
}
Ou, si vous savez que vous n'utiliserez jamais plus d'un nombre X de zéros, c'est peut-ê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 préoccupez des nombres négatifs, vous devrez supprimer la fonction -
et le lire.
176 votes
J'ai trouvé ce ce qui, je pense, est beaucoup plus simple :
("00" + h).slice (-3);
12 votes
@PauloBueno
("00" + 1234).slice (-3);
donne234
c'est-à-dire qu'il élimine le chiffre le plus significatif.19 votes
@DanielEarwicker Bien sûr que oui, mais vous devez vous adapter au nombre de chiffres que vous attendez.
("000" + 1234).slice(-4)
,("0000" + 12345).slice(-5)
et ainsi de suite...3 votes
Si vous voulez également limiter la longueur du numéro, vous pouvez utiliser ceci :
return (num/Math.pow(10,size)).toFixed(size).split('.')[1];
0 votes
Pour utiliser la solution @loafer sans connaître à l'avance la longueur maximale de votre numéro, vous devez d'abord utiliser ce qui suit :
size = ('' + num).length;
(pour les valeurs entières positives)0 votes
J'aime aussi l'approche de @loafer, mais elle ne fonctionne pas si le nombre a plus de chiffres que la taille prévue. Ceci semble mieux fonctionner :
(num/Math.pow(10, size) + '').replace(/0{0,1}\./m, '')
. N'oubliez pas que les deux solutions ne fonctionnent que pour les nombres entiers.27 votes
Maintenant, javascript supporte padStart :
(5).toString().padStart(3, "0")
.0 votes
Une simple ligne simple utilisant la logique ternaire :
num < 10 ? num = '0'+num : null
1 votes
L'ECMA2017 vous permet d'utiliser
num.toString().padStart(5,'0')
qui remplit un nombre de longueur 5.33
devient00033
)