bignumber.js - JavaScriptでの浮動小数点の計算

JavaScriptに限らず浮動小数点の演算では以下のような誤差が発生します。

> 0.1  + 0.2
  0.30000000000000004
> 1.13 * 100
  112.99999999999999

お金の計算で四捨五入や切り上げ、切り捨てなどが絡む場合はこういった誤差が致命的だったりします。このような場合、JavaではBigDecimalを使ったりしますが、JavaScriptには同様のライブラリとしてbignumber.jsというものがあるようです。
https://github.com/MikeMcl/bignumber.js/

使い方は簡単でこんな感じ。

> new BigNumber(0.1).plus(0.2).toPrecision()
  "0.3"
> new BigNumber(1.13).times(100).toPrecision()
  "113"

四捨五入や切り上げ、切り捨てなんかも簡単にできます。

> new BigNumber(1.135).round(2).toPrecision()
  "1.14"
> new BigNumber(1.135).times(100).floor().div(100).toPrecision()
  "1.13"

まあJavaBigDecimalもそうですが、内部でどのような処理を行っているかはお察しくださいという感じでパフォーマンスが要求される用途には使うべきではありませんが、JavaScriptでお金の計算をする場合には便利なライブラリだと思います。

なお、JavaScript数値計算用のライブラリとしてはmath.js(http://mathjs.org/)が人気が高いようですが、こちらも精度の高い計算のための数値型として内部でbignumber.jsを使っています。math.jsは多機能で巨大なライブラリなので、小数の計算を行いたいというだけであればbignumber.jsを単独で使うのがよさそうです。