RubyのRational
は有理数を扱うクラスです。
あるデータの状態割合を計算、画面表示しようと使ってみてうまくいかなかったことを書く。
※何個中何個が有効みたいな感じです。
分母0はやっぱだめ
Rational(2, 0)
って書くと、ZeroDivisionError
エクセプションが発生します。
irb(main):005:0> Rational(2,0)
ZeroDivisionError: divided by 0
まあ、当たりまえか。
勝手に既約される
今回、「8/10個が有効」みたいに表示したくて、Rationalと使ってみたのですが、勝手に約分してしまうので、to_s
すると個数が減ってしまう自体に4/5
。。。残念。
どうもruby1.8では約分されなかったみたいだけど、そのメソッドは廃止されてた。
分子に0を入れると、分母は1になる
irb(main):001:0> Rational(0, 10)
=> (0/1)
これは0に限らないけど、整数は分母1です。
irb(main):003:0> 7.to_r
=> (7/1)
こんな書き方もできる!(~2.1)
irb(main):004:0> 2/3r
=> (2/3)
ということで、今回の用途で表示には使えなかったよん、残念。