数値を小数点以下 2 桁に丸めるコード行があります。しかし、次のような数値が表示されます: 10.8、2.4 など。これらは私が考える小数点以下 2 桁ではありません。次のコードをどのように改善すればよいでしょうか?
Math.round(price*Math.pow(10,2))/Math.pow(10,2);
10.80、2.40 などの数字が欲しいです。jQuery を使っても問題ありません。
ベストアンサー1
固定小数点表記を使用して数値をフォーマットするには、固定方法:
(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"
アップデート:
今では、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
代わりに、内部的に API を使用するメソッドを使用することもできますIntl
。
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 は、千単位の区切りや通貨記号など、さまざまな書式設定オプションも提供します。