数値

概要

この章では数値オブジェクトについて改めて説明します。 数値オブジェクトの操作を通して一般的なオブジェクト操作に慣れてもらうことも狙いです。

数値オブジェクトのクラス

数値オブジェクトは様々な種類があります。 その中でも、整数オブジェクトと小数オブジェクトについて説明します。

それぞれ、整数オブジェクトはFixnumクラスのインスタンス、小数オブジェクトはFloatクラスのインスタンスです。

>> 1.class
=> Fixnum
>> 1.0.class
=> Float

数値リテラル

リテラルというのはプログラム内でオブジェクトを直接生成する記法です。 というと難しいですが、1とか1.0とかが数値リテラルです。 このようにプログラム内に数字を書くと数値オブジェクトが生成されます。

# 1を表す整数オブジェクトのリテラル
1

# 1.0を表す小数オブジェクトのリテラル
1.0

# 「Hello, world!」という文字列オブジェクトのリテラル
"Hello, world!"

数値リテラルには様々なものがあります。 その中の一部を紹介します。

# 普通の書き方
1234567890

# 見やすいように3桁ごとに区切りをいれる
1_234_567_890

# マイナスの値
-12345

# 指数表現の小数 1.23 * 10の4乗 = 12300.0
1.23e4

# 指数表現 1.23 * 10のマイナス4乗 = 0.000123
1.23e-4

算術演算

2つの数値オブジェクトを使って算術演算ができます。 これまで何度も出てきましたが、こんな感じの演算子(風メソッド)があります。

  • +: 足し算
  • -: 引き算
  • *: 掛け算
  • /: 割り算
  • %: 割り算の余り
  • **: 累乗

次のように使うことができます。

>> 1 + 1
=> 2
>> 1.+(1)
=> 2
>> 1.+1
=> 2

また、算術演算では自動でクラスを変換してくれるようになっています。 整数と小数の演算結果は小数オブジェクトになります。 整数と整数の演算結果は整数オブジェクトになります。

>> 5 / 2
=> 2
>> 5 / 2.0
=> 2.5
>> 5.0 / 2
=> 2.5
>> 5.0 / 2.0
=> 2.5

型変換

整数を小数に変換したり、小数を整数に変換したり、Rubyではオブジェクトを別のクラスのオブジェクトに変換することができます。

整数を小数に変換するにはto_fメソッド1を使います。

>> 5.to_f
=> 5.0
>> 5.to_f / 2
=> 2.5

小数を整数に変換するにはto_iメソッド2を使います。 to_iメソッドでは小数点以下は切り捨てられます。

>> 5.0.to_i
=> 5
>> 5.0.to_i / 2
=> 2
>> 2.5.to_i
=> 2

四捨五入したい場合はroundメソッドを使います。

>> 2.1.round
=> 2
>> 2.5.round
=> 3

to_sメソッド3を使って文字列に変換することもできます。

>> 5.to_s
=> "5"
>> 5.0.to_s
=> "5.0"

他にも、floorceilといった変換のメソッドがあります。

練習問題

(1) 整数と小数

整数と整数、整数と小数、小数と小数のそれぞれの組み合わせについて、基本的な算術演算(足し算、引き算、割り算、掛け算、余り)を実行して結果を調べてください。

(2) 変換

Floatクラスのメソッドceilfloorの意味をドキュメントで調べて使ってみてください。

1. To floatの略です
2. To integer(整数)の略です
3. To stringの略です