或るプログラマの開発日記

日々の勉強したことの備忘録なんかに使っていきます

Rubyで0.1を10回足しても1.0にはならない件

どうも、パイソンです。

前回の記事で、小数の足し算について取り上げました。

osishow3.hateblo.jp

すると、Rubyでは小数の計算が正確にできるのかなー?という疑問が沸いてみたので、少し実験してみることにしました。

0.1を10回足すとどうなる?

CやらJavaやらでプログラムを組んだことがある人なら、0.1を10回足して1になるかというのは興味深い内容かとは思います。

で、早速実装してみます。

プログラム

x = 0.0
10.times do
  x += 0.1
end
puts x


実行結果(version 2.2.3p173)

0.9999999999999999

え、、やっぱりならないんだ。。

調べてみた結果

qa.atmarkit.co.jp

この件について、調べてたらどうも昔のバージョンは1.0になってたけど今はならないとの事。

うーん、、昔のバージョン使ってた人はこの言語仕様変更にどう対応したんだろうという疑問が残りましたが、やはり小数の計算についてはきちんと考慮してプログラミングしないといけないなーと再認識しました。

メモメモφ(・ω・