有理数(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_i
やRational#to_f
を用いる。
p Rational(7, 3).to_i #=> 2 p Rational(7, 3).to_f #=> 2.3333333333333335