数学の計算問題で「小数点第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)
次のプログラムでは、四捨五入、切り捨て、切り上げを計算ボタン一つで計算できるようにした(この項、
ここでは、数値を指定した精度で丸めるにはどうすればよいかを考える。
これにうってつけなのが、toPrecision メソッドである。
toPrecision の正確な挙動については、
Number.prototype.toPrecision()(developer.mozilla.org)
を参照。
(この項、
大きな整数を3桁ごとにコンマ(カンマ)で区切ることは良く行われている。 これを実現するには、toLocaleString というメソッドを使えばよい。 Number.prototype.toLocaleString() developer.mozilla.org
下は、数値 d = new Number(68500000) を左に、 3桁コンマ区切りを入れた d_comma = d.toLocalString() を右に配した結果である。 (この項、2020-02-21)
まりんきょ学問所 ≫ JavaScript 手習い≫ 四捨五入とコンマ区切り