更新日:
【Ruby】 to_fメソッドの使い方を理解しよう
to_fメソッドとは、整数から小数に変換するメソッドです。
1
整数.to_f
例えば、以下のように記述すると、整数を小数に変換することができます。
1
2
3
num = 1
num.to_f
=> 1.0
to_fメソッドの使用場所や注意点
この章では、to_fメソッドの使用する場面や注意点などを解説します。
どのようなときに使うか
小数点以下も表示させたい時に使います。
1
2
3
4
5
num = 1
# 3で割った時の結果
num / 3
=> 0
上の例だと小数点以下は表示されないので1を3で割った値が0となってしまいます。
これではよろしくないですね。
このような時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メソッド
を使う必要はありません。
1
2
3
4
5
num = 1.0
# 3で割った時の結果
num / 3
=> 0.3333333333333333
classメソッド
を使ってそれぞれのクラスを確認してみましょう。
整数はIntegerクラス、小数はFloatクラスです。
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メソッド
を使うことができるようになります。
上の例のように正確な結果になりました。
Rubyの用語やコードの読み方を初歩から学びたい方は、こちらの書籍も参考になります。
その他の変換系メソッド
Rubyには他にもオブジェクトの種類を変換するメソッドが用意されています。
メソッド | 変換する内容 | 参照 |
---|---|---|
to_s | 文字列型に変換 | 参照記事 |
to_i | 数値オブジェクトに変換 | 参照記事 |
to_sym | シンボルに変換 | 参照記事 |
to_h | ハッシュオブジェクトに変換 | 参照記事 |
to_a | 配列オブジェクトに変換 | 参照記事 |
この記事のまとめ
- to_fメソッドは整数を小数に変換するメソッドのこと
- 小数点以下まで表示させたいときなどに使用する
- to_iメソッドを使うと小数を整数に逆変換することも出来る