【Ruby】to_fメソッドの使い方を理解しよう

Ruby

to_fメソッドとは、整数から小数に変換するメソッドです。

to_fメソッドの構文
1
整数.to_f

例えば、以下のように記述すると、整数を小数に変換することができます。

irb | to_fメソッドの使用例
1
2
3
num = 1
num.to_f
=> 1.0

to_fメソッドの使用場所や注意点

この章では、to_fメソッドの使用する場面や注意点などを解説します。

どのようなときに使うか
リンクをコピーしました

小数点以下も表示させたい時に使います。

irb | 整数の時
1
2
3
4
5
num = 1

# 3で割った時の結果
num / 3
=> 0

上の例だと小数点以下は表示されないので1を3で割った値が0となってしまいます。
これではよろしくないですね。
このような時to_fメソッドで小数に変換してあげると下記のように小数点以下も表示され、正しい値が表示されます。

irb | to_fメソッドの実行
1
2
3
4
5
6
7
num = 1
num.to_f
=> 1.0

# 3で割った時の結果
num.to_f / 3
=> 0.3333333333333333

下の例のように最初から小数として定義していればto_fメソッドを使う必要はありません。

irb | 小数の時
1
2
3
4
5
num = 1.0

# 3で割った時の結果
num / 3
=> 0.3333333333333333

classメソッドを使ってそれぞれのクラスを確認してみましょう。
整数はIntegerクラス、小数はFloatクラスです。

irb | クラスの確認
1
2
3
4
5
6
7
8
9
10
11
12
num = 1
num.class
=> Integer

num = 1.0
num.class
=> Float

num = 1
num = num.to_f
num.class
=> Float

このようにto_fメソッドはIntegerクラスをFloatクラスに変換してくれるメソッドだということがわかりますね!
逆に小数から整数に変換するメソッドでto_iメソッドも用意されています。

注意すべき点
リンクをコピーしました

小数でオブジェクトを作成すると上のように浮動小数点数のFloatクラスのオブジェクトとなります。
浮動小数点数の計算は誤差が出るときがあります。

誤差が出る

このように2.0になるはずがそのとおりにならなかったり、割った結果が無限に続く場合最後がまるめられてしまいます。
この誤差のことをまるめ誤差といいます。

これを回避するにはBigDecimalという浮動小数点数演算ライブラリを使う必要があります。
使うにはrequireをする必要があります。
bigdecimal/utilもrequireをすると誤差が生じない小数に変換できるto_dメソッドを使うことができるようになります。

BigDecimal

上の例のように正確な結果になりました。

その他の変換系メソッド

Rubyには他にもオブジェクトの種類を変換するメソッドが用意されています。

メソッド 変換する内容 参照
to_s 文字列型に変換 参照記事
to_i 数値オブジェクトに変換 参照記事
to_sym シンボルに変換 参照記事
to_h ハッシュオブジェクトに変換 参照記事
to_a 配列オブジェクトに変換 参照記事
まとめ
  • to_fメソッドは整数を小数に変換するメソッドです。
  • 小数点以下まで表示させたいときなどに使用します。
  • to_iメソッドを使うと小数を整数に逆変換することもできます。