Ruby 割り算の結果を分数形式で取得する

Ruby 割り算の結果を分数形式で取得する

Rubyで、割り算の結果を分数形式で取得するソースコードを記述してます。「quo」と「Rational」を使用します。2つの違いは小数を使用した場合の結果となります。

環境

  • OS windows11 home
  • ruby 3.1.3p185

分数形式で取得

割り算の結果を分数形式で取得するには「quo」を使用します。

分子.quo(分母)

実際に使用してみます。

p 4.quo(8)
# (1/2)

p 4.quo(-8)
# (-1/2)

p -4.quo(-8)
# (1/2)

p 8.quo(8)
# (1/1)

p 5.quo(8)
# (5/8)

p 0.quo(1)
# (0/1)

分数形式が取得されていることが確認できます。

0で割り算するとエラーとなります。

1.quo(0)

in `quo': divided by 0 (ZeroDivisionError)

小数を使用

小数を使用した場合は、割り算の結果が返ります。

p 4.4.quo(8)
# 0.55

p 1.quo(0.5)
# 2.0

p 1.quo(0.9)
# 1.1111111111111112

Rational

「Rational」を使用して取得することも可能です。

p Rational(4, 8)
# (1/2)

p Rational(4, -8)
# (-1/2)

p Rational(-4, -8)
# (1/2)

p Rational(8, 8)
# (1/1)

p Rational(5, 8)
# (5/8)

p Rational(0, 1)
# (0/1)

こちらも「0」で割ると同様のエラーが発生します。

p Rational(1, 0)

in `Rational': divided by 0 (ZeroDivisionError)

小数を使用するとなるべく近い値の分数が結果として返ります。

p Rational(4.4, 8)
# (2476979795053773/4503599627370496) = 0.55

p Rational(0.5, 1)
# (1/2)

p Rational(1, 0.9)
# (9007199254740992/8106479329266893) = 1.111111111111111