1. ホーム
  2. javascript

[解決済み] 1桁の数字に0を付加して書式設定する方法は?

2022-03-26 02:37:47

質問

数字が2桁になるように書式設定したい。問題は、以下の場合に発生します。 0 - 9 が渡されるので、それを整形して 00 - 09 .

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

どのように解決するのですか?

編集(2021年)。

もうこのように手作業で数字を整形する必要はない。 この回答は、IE が重要で、バベルやバンドルが素晴らしい夢であった 2011 年の遠い昔に書かれたものです。

この回答を削除するのは間違いだと思いますが、もしあなたがこのページにたどり着いたのなら、親切にも この質問に対する二番目に高い投票による回答 この編集の時点では

の使い方を紹介してくれます。 .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);