更新日:
【Ruby】 to_iメソッドの使い方を理解しよう
to_iメソッドとは、数字の文字列を数値オブジェクトに変換するメソッドです。また、小数を整数に変換することもできます。
1
オブジェクト.to_i
例えば、以下のようにnum
という変数に文字として数字の1を代入し出力すると、"1"
が出力されました。
1
2
3
4
5
6
num = "1"
p num
=> "1"
num.to_i
=> 1
このnumに対し、to_iメソッド
を使った結果は1
のように数字としての1として出力することが出来ます。
to_iメソッドを使う場所とは?
この章では、to_iメソッドをどんな場面で使用するのか、数字以外の文字にメソッドを使った場合などを解説します。
どんな時に使うか
例えば下記のようなコードがあるとします。
1
puts 100 + "100"
数字としての100と文字としての100を足してみます。
このコードを実行すると下記のようになります。
このようにエラーが発生します。
なぜなら数値オブジェクトと文字列オブジェクトは+演算子で計算することができないからです。
これをちゃんと計算式できるようにしたいのであればnumを数値オブジェクトに変換する必要があります。
1
2
3
puts 100 + "100".to_i
# 100+100で200が表示される
200
上のように文字である100に対してto_iメソッド
を使い数値に変換します。
そうすることにより計算ができたわけです。
ただ上のような例で使うときはあまりありません。
なぜなら最初から数値オブジェクトとして定義すれば良いからです。
一番よく使う例としてはgetsメソッドを使うときです。
getsメソッド
を使って変数に値を代入するとき、必ず文字列オブジェクトとして代入されます。
1
2
input = gets.chomp
puts 100 + input
上の例だとgetsメソッド
で「100」を入力すると文字としての「100」でinputという変数に代入されます。
この場合だと先ほどの例の通りエラーが出ます。
なのでgetsメソッド
の返り値に対してto_iメソッドを使います。
1
2
input = gets.to_i
puts 100 + input
なのでgetsメソッドで数字を取得するときは忘れずにto_iメソッドを使いましょう。
小数に使う場合
小数(Floatクラス)に使うと整数(Integerクラス)に変換することができます。
1
2
3
4
5
6
7
8
9
# 小数として定義
num = 1.0
num.class
=> Float
#整数に変換
num = num.to_i
num.class
=> Integer
数字以外の文字にto_iメソッドを使ったとき
to_iメソッド
は数字の文字列オブジェクトに対して使うメソッドです。
では「あ」などの普通の文字に対して使うとどうなるでしょう?
この場合エラーが発生するのではなく、全て数字の「0」として変換されます。
1
2
3
num = "あ"
num.to_i
=> 0
よくあるのはgetsメソッド
で数字として入力したつもりが、かな入力で入力してしまったため全角の「5」などの数字が入ってしまい「0」として変換されてしまうことがあるので注意しましょう。
コードの流れがよく分からないという方は、こちらの参考書も参考になります。
その他の変換系メソッド
Rubyには他にもオブジェクトの種類を変換するメソッドが用意されています。
メソッド | 変換する内容 | 参照 |
---|---|---|
to_s | 文字列型に変換 | 参照記事 |
to_f | Floatクラス(浮動小数点数)に「変換 | 参照記事 |
to_sym | シンボルに変換 | 参照記事 |
to_h | ハッシュオブジェクトに変換 | 参照記事 |
to_a | 配列オブジェクトに変換 | 参照記事 |
この記事のまとめ
- to_iメソッドは数値オブジェクトに変換するメソッドのこと
- 小数も整数に変換することが出来る
- 文字列を計算式で使いたいときに便利なメソッド!