Comment formater les nombres en ajoutant 0 aux numéros à un chiffre?

Je veux formater un numéro pour qu’il comporte deux chiffres. Le problème est dû au passage de 0 9 , il me faut donc le formater à 0009 .

Existe-t-il un formateur de nombres en JavaScript?

La meilleure méthode que j’ai trouvée est la suivante (notez que cette version simple ne fonctionne que pour les entiers positifs):

 var myNumber = 7; var formattedNumber = ("0" + myNumber).slice(-2); console.log(formattedNumber); 

Si le nombre est supérieur à 9, convertissez le nombre en chaîne (cohérence). Sinon, ajoutez un zéro.

 function n(n){ return n > 9 ? "" + n: "0" + n; } n( 9); //Returns "09" n(10); //Returns "10" n(999);//Returns "999" 

Utilisez la méthode toLocaleSsortingng () dans n’importe quel nombre. Donc, pour le numéro 6, comme on le voit ci-dessous, vous pouvez obtenir les résultats souhaités.

 (6).toLocaleSsortingng('en-US', {minimumIntegerDigits: 2, useGrouping:false}) 

Générera la chaîne ’06’.

Voici une fonction simple de remplissage de nombres que j’utilise habituellement. Il permet n’importe quelle quantité de rembourrage.

 function leftPad(number, targetLength) { var output = number + ''; while (output.length < targetLength) { output = '0' + output; } return output; } 

Exemples:

 leftPad(1, 2) // 01 leftPad(10, 2) // 10 leftPad(100, 2) // 100 leftPad(1, 3) // 001 leftPad(1, 8) // 00000001 

Dans tous les navigateurs modernes, vous pouvez utiliser

 numberStr.padStart(2, "0"); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Ssortingng/padStart

 function zeroPad(numberStr) { return numberStr.padStart(2, "0"); } var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; numbers.forEach( function(num) { var numSsortingng = num.toSsortingng(); var paddedNum = zeroPad(numSsortingng); console.log(paddedNum); } ); 
 ("0" + (date.getMonth() + 1)).slice(-2); ("0" + (date.getDay())).slice(-2); 

Tu peux faire:

 function pad2(number) { return (number < 10 ? '0' : '') + number } 

Exemple:

 document.write(pad2(0) + '
'); document.write(pad2(1) + '
'); document.write(pad2(2) + '
'); document.write(pad2(10) + '
'); document.write(pad2(15) + '
');

Résultat:

 00 01 02 10 15 

Il semble que vous ayez une chaîne au lieu d’un chiffre. utilisez ceci:

 var num = document.getElementById('input').value, replacement = num.replace(/^(\d)$/, '0$1'); document.getElementById('input').value = replacement; 

Voici un exemple: http://jsfiddle.net/xtgFp/

C’est simple et fonctionne plutôt bien:

 function twoDigit(number) { var twodigit = number >= 10 ? number : "0"+number.toSsortingng(); return twodigit; } 

Un revêtement rapide et sale ….

 function zpad(n, len) { return 0..toFixed(len).slice(2,-n.toSsortingng().length)+n.toSsortingng(); } 

Je sais que c’est un article ancien, mais je voulais offrir une solution plus flexible et une solution OO.

J’ai extrapolé la réponse acceptée un peu et l’object Number de javascript étendu pour permettre le remplissage zéro réglable:

 Number.prototype.zeroPad = function(digits) { var loop = digits; var zeros = ""; while (loop) { zeros += "0"; loop--; } return (this.toSsortingng().length > digits) ? this.toSsortingng() : (zeros + this).slice(-digits); } var v = 5; console.log(v.zeroPad(2)); // returns "05" console.log(v.zeroPad(4)); // returns "0005" 

Il n’y a pas de formateur de nombres intégré pour JavaScript, mais certaines bibliothèques accomplissent ceci:

  1. underscore.ssortingng fournit une fonction sprintf (avec beaucoup d’autres formateurs utiles)
  2. javascript-sprintf , qui emprunte à underscore.ssortingng.

Version améliorée de la réponse précédente

 function atLeast2Digit(n){ n = parseInt(n); //ex. if already passed '05' it will be converted to number 5 var ret = n > 9 ? "" + n: "0" + n; return ret; } alert(atLeast2Digit(5)); 

ou

 function zpad(n,l){ return rep(ln.toSsortingng().length, '0') + n.toSsortingng(); } 

avec

 function rep(len, chr) { return new Array(len+1).join(chr); } 

Si vous voulez limiter vos chiffres en même temps:

 function pad2(number) { number = (number < 10 ? '0' : '') + number; number = number.substring(0,2); return number; } 

Cela permettrait également de couper toute valeur supérieure à deux chiffres. Je l'ai étendu sur la solution de fanaur.

La réponse de @ Lifehack m’a été très utile. où je pense que nous pouvons le faire en une seule ligne pour les nombres positifs

  Ssortingng(input).padStart(2, '0'); 
          

Voici une solution récursive simple qui fonctionne pour un nombre quelconque de chiffres.

 function numToNDigitStr(num, n) { if(num >= Math.pow(10, n - 1)) { return num; } return "0" + numToNDigitStr(num, n-1); } 

Voici ma version Peut facilement être adapté à d’autres scénarios.

 function setNumericFormat(value) { var length = value.toSsortingng().length; if (length < 4) { var prefix = ""; for (var i = 1; i <= 4 - length; i++) { prefix += "0"; } return prefix + value.toString(); } return value.toString(); } 

Si vous n’avez pas lodash dans votre projet, il serait exagéré d’append la bibliothèque entière uniquement pour utiliser une fonction. C’est la solution la plus sophistiquée de votre problème que j’ai jamais vue.

 _.padStart(num, 2, '0') 
  function colorOf(r,g,b){ var f = function (x) { return (x<16 ? '0' : '') + x.toString(16) }; return "#" + f(r) + f(g) + f(b); } 

Pour quiconque veut avoir des différences de temps et avoir des résultats qui peuvent être négatifs, voici un bon exemple. pad (3) = “03”, pad (-2) = “-02”, pad (-234) = “-234”

 pad = function(n){ if(n >= 0){ return n > 9 ? "" + n : "0" + n; }else{ return n < -9 ? "" + n : "-0" + Math.abs(n); } } 

avec cette fonction, vous pouvez imprimer avec n chiffres que vous voulez

 function frmtDigit(num, n) { isMinus = num < 0; if (isMinus) num *= -1; digit = ''; if (typeof n == 'undefined') n = 2;//two digits for (i = 1; i < n; i++) { if (num < (1 + Array(i + 1).join("0"))) digit += '0'; } digit = (isMinus ? '-' : '') + digit + num; return digit; }; 

mon exemple serait :

 
function x() { var showTime = document.getElementById("showTime"); var myTime = new Date(); var hour = myTime.getHours(); var minu = myTime.getMinutes(); var secs = myTime.getSeconds(); if (hour < 10) { hour = "0" + hour }; if (minu < 10) { minu = "0" + minu }; if (secs < 10) { secs = "0" + secs }; showTime.innerHTML = hour + ":" + minu + ":" + secs; } setInterval("x()", 1000)

`${number}`.replace(/^(\d)$/, '0$1');

Regex est le meilleur.

Le type de données AS en Javascript est déterminé dynamicment. Il traite 04 comme 4

 var x=4; x = x<10?"0"+x:x console.log(x); // 04