18日目:Javascriptで小数点の計算をするときの注意


どうも、みなさん、ぱんだです。
Bitcoinの取引BOTをJSでやっていたのですが、
注文にエラー起こるな〜と思うことが多かったので、ログを見てみたらびっくり!

1.6btcを取引したいはずが、1.5999999999999になってる!

なぜだ?と思い調べてみると
JSでは、小数点の四則演算を行うと誤差が生じるらしいです!
(計算できないプログラミング言語ってクソですね)

この誤差はIEEE 754(浮動小数点数演算標準) に起因するようです。

解決方法は2つ!

  1. ライブラリを使って計算(Decimal.js)
  2. 一度整数に桁ずらし(a = a * 10 ^ n)して計算してから元に戻す(a= a/ 10 ^ n)

(厳密には2の方法でも微妙な誤差が生まれることはあるようですが…)

みなさん、いいJSライフを!

カテゴリー: 2017年度, アドベントカレンダー パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です