Ruby 3.3 リファレンスマニュアル

instance method String#to_r

to_r -> RationalRuby 1.9.3 から[permalink][rdoc][edit]

自身を有理数(Rational)に変換した結果を返します。

Kernel.#Rational に文字列を指定した時のように、以下のいずれかの形式で指定します。

  • "1/3" のような分数の形式
  • "0.3" のような10進数の形式
  • "0.3E0" のような x.xEn の形式
  • 数字をアンダースコアで繋いだ形式
p '  2  '.to_r     # => (2/1)
p '1/3'.to_r       # => (1/3)
p '-9.2'.to_r      # => (-46/5)
p '-9.2E2'.to_r    # => (-920/1)
p '1_234_567'.to_r # => (1234567/1)
p '1_234/5_678'.to_r # => (617/2839)

Kernel.#Rational に文字列を指定した時とは異なる点もあります。

途中に変換できないような文字列が入っていた場合は、それより先の文字列は無視されます。

p '21 june 09'.to_r  # => (21/1)
p '21/06/09'.to_r  # => (7/2)   # 21/6 を約分して 7/2。

変換できないような文字列を指定した場合は 0/1 を返します。

p 'foo'.to_r       # => (0/1)
p ''.to_r          # => (0/1)
p 'bwv 1079'.to_r  # => (0/1)

[SEE_ALSO] Kernel.#Rational