更新日:
【Ruby】 数値オブジェクトの特徴や便利なメソッドを理解しよう!
数値オブジェクトとは、Rubyのオブジェクト中の一つで数値を取り扱えるオブジェクトのことです。
1
2
3
4
5
6
irb(main):001:0> age = 20
=> 20
irb(main):002:0> age
=> 20
irb(main):003:0> age.class
=> Integer
上記のように、数値を記述するだけで定義することが出来ます。
数値オブジェクトの使い方
この章では、数値オブジェクトの使い方について解説します。
数値オブジェクトが所属するクラス
Rubyで使用する文字や数字などのデータはオブジェクトという形でデータ化されます。
そのオブジェクトの一つに数値オブジェクトというものがあります。
数値オブジェクトは下記のように整数と小数点がある浮動小数点数に分けられます。
Numeric -+--Integer(整数)
|
+--Float (浮動小数点数)
なおこのクラスにnewメソッドを使ってインスタンスを作成することはできません。
数値オブジェクトを定義してみよう
数値オブジェクトは文字列オブジェクトのように「"(ダブルクォテーション)」で囲う必要はありません。
そのまま数値を書くだけで定義できます。
逆に「"(ダブルクォテーション)」で囲ってしまうと文字列オブジェクトになってしまうので気をつけましょう。
1
2
3
4
5
6
7
8
9
10
age = 20
p age
20
=> 20
age = "20"
p age
"20"
=> "20"
# 上の場合は数字の20でなく「20」という文字として扱われる
演算子を使ってみよう
数値オブジェクトは文字通り数字なので計算することもできます。
そのときに使うのがRubyの演算子です。
私たちの世界で使う記号とは多少異るので確認しておきましょう。
記号 | 説明 |
---|---|
+ | 足し算 |
- | 引き算 |
* | かけ算 |
/ | 割り算 |
% | 余剰 |
最後の余剰は実際の生活の中では馴染みがないのでわかりづらいかもしれません。
これは〜を〜で割った時の余りを求めるときに使います。
1
2
3
4
5
6
7
p 8 % 3
2
=> 2
p 10 % 5
0
=> 0
このように演算子を使えばターミナルで簡単な計算を行うこともできます。
比較演算子を使ってみよう
数値オブジェクトは計算の他にも値同士を比較することもできます。
そのときに使うのが比較演算子です。
記号 | 説明 |
---|---|
A == B | AとBは等しい |
A != B | AとBは等しくない |
A > B | AはBより大きい |
A < B | AはBより小さい |
A >= B | AはB以上 |
A <= B | AはB以下 |
この結果はtrueかfalseかで返ってきます。
等しい時は「=」と書きません。
プログラミングでの「=」は代入を意味するのでしたね。
ですので等しい時は「==」と記述します。
また文字列オブジェクト同様、計算は比較ができるのは数値オブジェクト同士になります。
文字列を計算しようとしても文字として認識されるためエラーが出ます。
ではこのような時はどうした良いでしょう。
to_iメソッド
to_iメソッドは文字列オブジェクトを10進数の表現と見なして整数に変換するメソッドです。
小数点がある時は切り捨てされ整数になります。
数値オブジェクトが使えるメソッド
数値オブジェクトにはRubyであらかじめ用意されている便利なメソッドがあります。
何種類か紹介してみます。
to_sメソッド
数値オブジェクトだけが使えるメソッドです。
数値オブジェクトに対して使うと文字列オブジェクトに変換されます。
roundメソッド
小数点を含む数値オブジェクトはFloatクラスのインスタンスになります。
そのFloatクラスのインスタンスに対して使うと小数点以下を四捨五入して整数に変してくれるメソッドです。
1
2
3
4
5
6
7
num = 1.1
num.round
> 1
num = 1.8
num.round
=> 2
floorメソッド
floorメソッドは小数点以下を小さい方の整数へ変換するメソッドです。
こちらは小数点以下を切り捨てて整数を返します。
1
2
3
num = 1.8
num.floor
=> 1
ceilメソッド
ceilメソッドは小数点以下を大きい方の整数へ変換するメソッドです。
1
2
3
num = 1.1
num.ceil
=> 2
このように前もって定義されているので、非常に便利ですね!オブジェクトについてもっと理解したいという初学者の方は、こちらの参考書にも丁寧に解説してあります。
この記事のまとめ
- 数値オブジェクトは、Rubyのオブジェクト中の一つで数値を取り扱えるオブジェクトのこと
- 数値オブジェクトには、整数と小数点がある浮動小数点数がある
- 数値を書くだけで定義することが出来る