Ruby 2.4.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Stringクラス > to_f

instance method String#to_f

to_f -> Float[permalink][rdoc]

文字列を 10 進数表現と解釈して、浮動小数点数 Float に変換します。

浮動小数点数とみなせなくなるところまでを変換対象とします。途中に変換できないような文字列がある場合、それより先の文字列は無視されます。


p "-10".to_f   # => -10.0
p "10e2".to_f  # => 1000.0
p "1e-2".to_f  # => 0.01
p ".1".to_f    # => 0.1

p "1_0_0".to_f # => 100.0  # 数値リテラルと同じように区切りに _ を使える
p " \n10".to_f # => 10.0   # 先頭の空白・改行は無視される
p "7xa.5".to_f # => 7.0

以下の例は、先頭に浮動小数点数とみなせるものがないため、0.0 を返します。変換対象が空文字列のケースでも、0.0 を返します。


p "".to_f      # => 0.0
p "nan".to_f   # => 0.0
p "INF".to_f   # => 0.0
p "-Inf".to_f  # => 0.0

変換後の Float が有限の値を取れないときは、Float::INFINITY を用います。このとき、全ての警告を有効にすると、警告が表示されます。


#!ruby -W2

p ("10" * 1000).to_f   # => Infinity
# warning: Float 10101010101010101010... out of range

なお、このメソッドとは逆に、数値を文字列に変換するには Kernel.#sprintf, String#%, Integer#to_s を使用します。

[SEE_ALSO] String#hex, String#oct, String#to_i, Kernel.#Integer, Kernel.#Float