数値型クラス
Numeric
数値を表す抽象クラス。
数値の切り捨て、切り上げ
ceil
: それ自身と同じかそれ自身より大きな整数のうち、最小のものを返すfloor
: それ自身より小さな整数のうち、最大のものを返すround
: 最も近い整数のうち、最大のものを返すtruncate
: それ自身と 0 の間にある整数で、最も近いものを返す
1.9.ceil # => 2
1.9.floor # => 1
1.9.round # => 2
1.9.truncate # => 1
-1.1.ceil # => -1
-1.1.floor # => -2
-1.1.round # => -1
-1.1.truncate # => -1
数値の絶対値
abs
: 絶対値を返す
Integer
整数を表す。
整数のべき乗
**
整数の除算
/
数値の剰余
modulo
%
次の整数、前の整数を求める
next
,succ
: 次の整数を返すpred
: 前の整数を返す
整数を使った繰り返し
times
: その整数の数だけ繰り返すupto
,downto
: ある整数からある整数まで繰り返す
数値の小数化
to_f
Float
浮動小数点数を表す。
Numeric
を継承しているため、ほとんど同じメソッドを使えるが、シフト演算やビット演算のように、少数では処理できない演算は実装されていない。
小数を使った繰り返し
step
# 1.5 から 21.5 まで 2.5 ずつ繰り返す
1.5.step(21.5, 2.5) { |f| puts f }
# => 1.5
# 4.0
# 6.5
# 9.0
# 11.5
# 14.0
# 16.5
# 19.0
# 21.5
Rational
有理数を表す。
有理数は、2 つの整数 a
, b
( b ≠ 0
) を用いて a / b
という分数で表現できる数。
有理数の四則演算
\[ \frac{a}{b} + \frac{c}{d} = \frac{ad + bc}{bd} \]
\[ \frac{a}{b} - \frac{c}{d} = \frac{ad - bc}{bd}\]
\[ \frac{a}{b} \times \frac{c}{d} = \frac{ac}{bd}\]
\[ \frac{a}{b} \div \frac{c}{d} = \frac{ad}{bc}\]
有理数の操作
denominator
: 分母を返すnumerator
: 分子を返すdivmod
: 引数で除算した結果と、その剰余を配列で返す
a = Rational(1, 2) # => (1/2)
a.denominator # => 2
a.numerator # => 1
0.25.denominator # => 4
0.25.numerator # => 1
Rational(1, 2).divmod Rational(1, 3)
# => [1, (1/6)]
Rational
クラスと他の Numeric
クラスの四則演算
四則演算の中で演算対象のクラスを判別して、返す結果のクラスを決定する。
- 演算の対象が
Rational
,Integer
の場合はRational
- 演算の対象が
Float
の場合はFloat
Rational(1, 2) + Rational(1, 3) # => (5/6)
Rational(1, 2) + 1 # => (3/2)
Rational(1, 2) + 0.25 # => 0.75
Complex
複素数を表す。
複素数は、実部 a
と虚部 b
から成り、 a + bi
( a
, b
は実数、i
は虚数 ) で表すことができる数。
虚数は、複素数のうち b ≠ 0
となる任意の値であるため、実数として表現できない。
複素数の四則演算
\[ (a + bi) + (c + di) = (a + c) + (b + d)i \]
\[ (a + bi) - (c + di) = (a - c) + (b - d)i \]
\[ (a + bi) \times (c + di) = (ac + bd) + (bc + ad)i \]
\[ (a + bi) \div (c + di) = \frac{ac + bd}{c^2 + d^2} + \frac{bc - ad}{c^2 + d^2}i \]
複素数の操作
real
: 実部を返すimaginary
: 虚部を返す
Numeric
クラスでも使用可能。(real
は self
を、imaginary
は 0
を返す)
ガウス平面と極座標
複素数は x + yi
の形式で表現できるため、X 軸を実軸、Y 軸を虚軸とした 2 次元座標で表現できる。(=複素平面、ガウス平面)
見方を変えると、絶対値 r
と偏角 θ
で表現できる。この、(r, θ)
を極座標という。
abs
: 絶対値を返すarg
: 偏角を返すpolar
: 絶対値と偏角を配列で返す
Complex(1, 3).abs # => 3.1622776601683795
Complex(1, 3).arg # => 1.2490457723982544
Complex(1, 3).polar # => [3.1622776601683795, 1.2490457723982544]
Complex
クラスと他の Numeric
クラスの四則演算
Numeric
のサブクラスも、real
, imaginary
メソッドが使えるため、四則演算が可能。
結果は Complex
クラスのインスタンスで返る。