mathn
mathnモジュールを使うと、Integerの / で割り切れないとき、自動的に結果がRationalになります。つまり、こういうことです。
p 4/2 #=> 2 p 1/2 #=> 0 require 'mathn' p 4/2 #=> 2 p 1/2 #=> 1/2
クラスを調べてみましょう。
p (4/2).class #=> Fixnum p (1/2).class #=> Fixnum require 'mathn' p (4/2).class #=> Fixnum p (1/2).class #=> Rational
結果がそのクラスに収まらないときには一歩広いクラスに自動的にうつるという意味では、FixnumがBignumになるのと似ています。
p (2**10).class #=> Fixnum p (2**20).class #=> Fixnum p (2**29).class #=> Fixnum p (2**30).class #=> Bignum x = 2**30 p x.class #=> Bignum x >>= 1 p x.class #=> Fixnum