Ruby Tips!

RubyのTipsを紹介します

有理数(Rational)を使った計算をする

Rubyには有理数をあらわすRationalクラスが用意されている。このクラスを使うにはRuby 1.8ではrationalライブラリをrequireする。Ruby 1.9ではrationalライブラリのrequireは必要ない。

有理数の生成はKernel.#Rationalを使う。Rationa.newでないことに注意。以下はいずれも1 / 2という有理数を現すRationalオブジェクトを生成する例である。

p Rational(1, 2) #=> (1/2)
p Rational(0.1, 0.2) #=> (1/2)
p Rational("0.1", "0.2") #=> (1/2)
p Rational("1/2") #=> (1/2)
p Rational("0.5") #=> (1/2)

Rationalクラスには四則演算が定義されているため、他の数値と同様に扱うことができる。Rationalとの演算の結果は、Rationalとなることに注意。

p Rational(1, 2) + 1 #=> (3/2)
p Rational(1, 2) - 1 #=> (-1/2)
p Rational(1, 2) * 2 #=> (1/1)
p Rational(1, 2) / 2 #=> (1/4)

数値からRationalオブジェクトを得るにはto_rメソッドを使用する。また数値の除算の結果をRationalオブジェクトで得るには、quoメソッドを使用する。

p 42.to_r #=> (42/1)
p 42.0.to_r #=> (42/1)
p 1.quo(42) #=> (1/42)

逆にRationalオブジェクトから整数や浮動小数点を得るには、Rational#to_iRational#to_fを用いる。

p Rational(7, 3).to_i #=> 2
p Rational(7, 3).to_f #=> 2.3333333333333335