数値を 2 桁にフォーマットしたいのですが、問題は0
–が渡されたときに発生するため、 –9
にフォーマットする必要があります。00
09
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);