四捨五入とコンマ区切り

作成日 : 2004-02-01
最終更新日 :

四捨五入の問題

数学の計算問題で「小数点第3位で四捨五入し、小数点第2位まで求めよ」 という指示があった。これを JavaScript で実現するにはどうすればよいか。

四捨五入用の関数が用意されていない場合は、 次のように考える。ある数 x を小数点第 n 位まで求めるときは、 10のn乗をxに掛け、整数で四捨五入して、10の n 乗で割ればよい。 当初はこの通りのプログラムを実装していた。 このとき、JavaScript による演算の誤差が掛算や割算で出てこないか心配だった。

そのような心配は、最初から四捨五入用の関数が用意されたことでなくなった。 具体的には、JavaScript 1.5 で Math.toFixed メソッドが登場した。 このメソッドを使うと、小数点以下が指定された桁数になる。 この場合、桁数の丸めは四捨五入される。 toFixed の正確な挙動については、 Number.prototype.toFixed()(developer.mozilla.org) を参照。

整数化の問題

小数を整数にするには、Math.round()もある。 Math.round() の正確な挙動については、次のリンク先 Math.round() (developer.mozilla.org)を参照のこと。

切り捨てや切り上げの問題

一方、切り上げや切り捨ては、Math.toFixed は使えない。 このような場合は、最初の整数化に準拠する。たとえば、 小数第3位までを求めてそれより下(未満)は切り捨てる、という場合は、 Math.floor 関数を使えばよい。
例:Math.floor((Math.PI * 1000)) / 1000); // -> 3.141
切り上げる場合は、Math.floor 関数の代わりに Math.ceil 関数を使えばいい。 (この項、2020-02-21)

次のプログラムでは、四捨五入、切り捨て、切り上げを計算ボタン一つで計算できるようにした(この項、2023-02-28)。

入力
小数点以下の数字 0 1 2 3 4 5
四捨五入値
切り捨て値
切り上げ値

精度の問題

ここでは、数値を指定した精度で丸めるにはどうすればよいかを考える。 これにうってつけなのが、toPrecision メソッドである。 toPrecision の正確な挙動については、 Number.prototype.toPrecision()(developer.mozilla.org) を参照。 (この項、2023-02-28

コンマ区切り問題

大きな整数を3桁ごとにコンマ(カンマ)で区切ることは良く行われている。 これを実現するには、toLocaleString というメソッドを使えばよい。 Number.prototype.toLocaleString() developer.mozilla.org

下は、数値 d = new Number(68500000) を左に、 3桁コンマ区切りを入れた d_comma = d.toLocalString() を右に配した結果である。 (この項、2020-02-21)

まりんきょ学問所JavaScript 手習い≫ 四捨五入とコンマ区切り


MARUYAMA Satosi