1. ホーム
  2. javascript

[解決済み] JavaScriptで小数点以下が2つだけの数値を書式設定する

2022-03-16 17:57:47

質問

私は、数字を小数点以下2桁に丸める次のようなコードを持っています。しかし、次のような数字が表示されます。10.8、2.4、など。これらは私の考える小数点以下2桁の数字ではありませんので、どのように改善すればよいでしょうか?

Math.round(price*Math.pow(10,2))/Math.pow(10,2);

10.80、2.40などの数字が欲しいです。jQueryの使用は問題ないです。

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

固定小数点表記で数値をフォーマットするには、単純に toFixed というメソッドがあります。

(10.8).toFixed(2); // "10.80"

var num = 2.4;
alert(num.toFixed(2)); // "2.40"

なお toFixed() は文字列を返します。

重要 : toFixed は 90% の確率で丸めません。丸めた値を返しますが、多くの場合、うまくいかないので注意してください。

例えば

2.005.toFixed(2) === "2.00"

UPDATE

現在では Intl.NumberFormat コンストラクタを使用します。の一部です。 ECMAScript国際化API仕様 (ECMA402) を参照してください。これには かなり良いブラウザサポート IE11も含めて Node.jsで完全サポート .

const formatter = new Intl.NumberFormat('en-US', {
   minimumFractionDigits: 2,      
   maximumFractionDigits: 2,
});

console.log(formatter.format(2.005)); // "2.01"
console.log(formatter.format(1.345)); // "1.35"

代わりに toLocaleString このメソッドは、内部的には Intl APIを使用します。

const format = (num, decimals) => num.toLocaleString('en-US', {
   minimumFractionDigits: 2,      
   maximumFractionDigits: 2,
});


console.log(format(2.005)); // "2.01"
console.log(format(1.345)); // "1.35"

また、このAPIでは、千区切りや通貨記号など、さまざまな書式を選択することができます。