1. ホーム
  2. javascript

[解決済み] Javascript: 丸め誤魔化して小数点以下N桁にした数値の書式設定

2022-09-06 09:19:07

質問

JavaScriptで、数字を小数点以下N桁に丸める典型的な方法は以下のようなものです。

function roundNumber(num, dec) {
  return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
}

function roundNumber(num, dec) {
  return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
}

console.log(roundNumber(0.1 + 0.2, 2));
console.log(roundNumber(2.1234, 2));

しかし、この方法では 最大 に丸められますが、小数点以下 N 桁に丸めたい場合は 常に を小数点以下 N 桁に丸めたい。たとえば、"2.0" は "2" に四捨五入されます。

何かアイデアはありますか?

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

それは四捨五入の問題ではなく、表示の問題です。数値には有効数字の情報は含まれておらず、2という値は2.0000000000000と同じです。丸められた値を文字列にするときに、ある桁数を表示させなければならないのです。

のように、数字の後に0を付ければいいんです。

var s = number.toString();
if (s.indexOf('.') == -1) s += '.';
while (s.length < s.indexOf('.') + 4) s += '0';

(これは、クライアントの地域設定が小数点以下の区切り文字としてピリオドを使用していることを前提としていることに注意してください。)