Rubyレシピブック(P290)で 比較する数値の差を Float::EPSILON と比較する方法がありますが、記事の例(比較する数値が1.0)はTrueとなってうまくいきますが、それ以外の数値ではFalseでうまくいきません。
比較したい数で割るのを忘れているとか:
$ ruby -e 'x = 10.333333333333333 ; p Float::EPSILON > ((x-31.0/3)/x).abs' true
おお。そんなやり方が。勉強になります。
EPSILON
1.0 + Float::EPSILON != 1.0 となる最小の値