1桁の数字の先頭に0をつけて数字をフォーマットするにはどうすればいいですか? 質問する

1桁の数字の先頭に0をつけて数字をフォーマットするにはどうすればいいですか? 質問する

数値を 2 桁にフォーマットしたいのですが、問題は0–が渡されたときに発生するため、 –9にフォーマットする必要があります。0009

JavaScript には数値フォーマッタがありますか?

ベストアンサー1

編集(2021):

このように手動で数字をフォーマットする必要はもうありません。この回答は、IE が重要で、Babel とバンドラーが素晴らしい希望に満ちた夢だった 2011 年という遠い昔に書かれたものです。

この回答を削除するのは間違いだと思いますが、もしあなたがここにいるなら、この質問に対する2番目に投票数が多かった回答この編集時点では。

の使い方を紹介します.toLocaleString()オプションパラメータ{minimumIntegerDigits: 2}。 面白いですね。以下に、あなたの便宜のために、この方法を使用して、元の回答の 3 つの例をすべて再作成しました。

[7, 7.5, -7.2345].forEach(myNumber => {
  let formattedNumber = myNumber.toLocaleString('en-US', {
    minimumIntegerDigits: 2,
    useGrouping: false
  })
  console.log(
    'Input:    ' + myNumber + '\n' +
    'Output:   ' + formattedNumber
  )
})


元の回答:

私が見つけた最良の方法は次のようなものです:

(この単純なバージョンは正の整数に対してのみ機能することに注意してください)

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

小数点の場合は、このコードを使用できます (ただし、少し雑です)。

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

最後に、負の数の可能性に対処する必要がある場合は、符号を保存し、数値の絶対値に書式を適用し、事後に符号を再適用するのが最善です。この方法では、数値が合計2桁に制限されないことに注意してください。代わりに、小数点の左側(整数部分)の数値のみが制限されます。(符号を決定する行は、ここ)。

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

おすすめ記事