情シスは何度でも甦るさ。

OracleDB/Ruby好きの情シス部員がお送りします

ruby 2.1.0 on Amazon Linux で小数点以下の割り算が0.0になる

偏差値を割り出す小数点以下のめんどうな計算なのだが
開発環境とプロダクションで、同じrubyバージョン、同じデータ同じロジックなのに、計算結果が異なる。 しかも、irbやコマンドベースで実行するとちゃんと出るという謎仕様。

式  
(0.8125 - 1.14003927)  * 0.5 / 0.62771825

開発環境(Mac OSX 10.10.3)

$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin14.0]

$ ruby -e "p (0.8125 - 1.14003927)  * 0.5 / 0.62771825"
-0.2608967239681178

プロダクション(PaaS の sqaleを利用)

$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]

#OSは Amazon Linux
$ cat /etc/issue
Amazon Linux AMI release 2012.09
Kernel \r on an \m

$ ruby -e "p (0.8125 - 1.14003927)  * 0.5 / 0.62771825"
-0.2608967239681178

ただし、デバッグログだとこの計算式が0になる。 なんで?

#debg log
(0.8125 - 1.14003927)  * 0.5 / 0.62771825 =>: -0.0

解決方法

なんか括弧でくくったら直った。

式
(0.8125 - 1.14003927)  * (0.5 / 0.62771825)  

#debg log
(0.8125 - 1.14003927)  * (0.5 / 0.62771825)=>: -0.260896723968117847073377

しかも、小数点以下の桁が増えた。 rubyとOSとの問題?