Je veux formater un nombre pour qu'il ait deux chiffres. Le problème se pose lorsque 0
- 9
est passé, donc j'ai besoin qu'il soit formaté en 00
- 09
.
Existe-t-il un formateur de nombres en JavaScript ?
Je veux formater un nombre pour qu'il ait deux chiffres. Le problème se pose lorsque 0
- 9
est passé, donc j'ai besoin qu'il soit formaté en 00
- 09
.
Existe-t-il un formateur de nombres en JavaScript ?
Il n'est plus nécessaire de formater les chiffres à la main comme cela. Cette réponse a été écrite il y a longtemps, dans la lointaine année 2011, lorsque IE était important et que babel et les bundlers n'étaient qu'un rêve merveilleux et plein d'espoir.
Je pense que ce serait une erreur de supprimer cette réponse ; toutefois, au cas où vous vous trouveriez ici, je voudrais attirer votre attention sur le site de la Commission européenne. deuxième réponse la plus votée à cette question à partir de cette édition.
Il vous permettra de vous familiariser avec l'utilisation de .toLocaleString()
avec le paramètre options de {minimumIntegerDigits: 2}
. C'est passionnant. Ci-dessous, j'ai recréé les trois exemples de ma réponse originale en utilisant cette méthode pour votre confort.
[7, 7.5, -7.2345].forEach(myNumber => {
let formattedNumber = myNumber.toLocaleString('en-US', {
minimumIntegerDigits: 2,
useGrouping: false
})
console.log(
'Input: ' + myNumber + '\n' +
'Output: ' + formattedNumber
)
})
La meilleure méthode que j'ai trouvée est quelque chose comme 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);
Pour les décimales, vous pouvez utiliser ce code (qui est cependant un peu négligé).
var myNumber = 7.5;
var dec = myNumber - Math.floor(myNumber);
myNumber = myNumber - dec;
var formattedNumber = ("0" + myNumber).slice(-2) + dec.toString().substr(1);
console.log(formattedNumber);
Enfin, si vous devez faire face à la possibilité de nombres négatifs, il est préférable de stocker le signe, d'appliquer le formatage à la valeur absolue du nombre et de réappliquer le signe après coup. Notez que cette méthode ne limite pas le nombre à deux chiffres au total. Au lieu de cela, elle limite uniquement le nombre à la gauche de la décimale (la partie entière). (La ligne qui détermine le signe a été trouvée aquí ).
var myNumber = -7.2345;
var sign = myNumber?myNumber<0?-1:1:0;
myNumber = myNumber * sign + ''; // poor man's absolute value
var dec = myNumber.match(/\.\d+$/);
var int = myNumber.match(/^[^\.]+/);
var formattedNumber = (sign < 0 ? '-' : '') + ("0" + int).slice(-2) + (dec !== null ? dec : '');
console.log(formattedNumber);
@KeithPower Voici une démo qui illustre la méthode ci-dessus : jsfiddle.net/bkTX3 . Cliquez sur la boîte, modifiez la valeur, puis cliquez sur la boîte pour la voir en action.
Voici une fonction simple de remplissage de chiffres que j'utilise habituellement. Elle permet d'ajouter n'importe quelle quantité de remplissage.
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
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Duplicata possible de JavaScript : formatage d'un nombre avec exactement deux décimales
0 votes
Pas en double. ici, on demande de faire précéder (0001, 0002) pas après le point décimal 0.001 0.002
0 votes
Utilisation possible
str.padStart(2, '0'));
Voir cette réponse : stackoverflow.com/a/66344598/648298