aliases: Fixnum, Bignum
dynamic include: JSON::Generator::GeneratorMethods::Integer (by json)
要約
整数クラスです。
整数オブジェクトに特異メソッドを追加する事はできません。追加した場合、 TypeError が発生します。
2.4.0 から Fixnum, Bignum は Integerに統合されました。 2.4.0 からはどちらも Integer クラスのエイリアスとなっています。
目次
- インスタンスメソッド
- 追加されるメソッド
- 再定義されたメソッド
継承しているメソッド
- Numericから継承しているメソッド
- Comparableから継承しているメソッド
動的includeで追加されるメソッド
- JSON::Generator::GeneratorMethods::Integer (by json)
インスタンスメソッド
self % other -> Numeric[permalink][rdoc]modulo(other) -> Numeric-
算術演算子。剰余を計算します。
例:
# 剰余 13 % 4 # => 1 13 % -4 # => -3 -13 % 4 # => 3 -13 % -4 # => -1
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
self & other -> Integer[permalink][rdoc]-
ビット二項演算子。論理積を計算します。
- [PARAM] other:
- 数値
例:
1 & 1 # => 1 2 & 3 # => 2
self * other -> Numeric[permalink][rdoc]-
算術演算子。積を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
例:
# 積 2 * 3 # => 6
self ** other -> Numeric[permalink][rdoc]-
算術演算子。冪(べき乗)を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
例:
2 ** 3 # => 8 2 ** 0 # => 1 0 ** 0 # => 1
self + other -> Numeric[permalink][rdoc]-
算術演算子。和を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
例:
# 和 3 + 4 # => 7
self - other -> Numeric[permalink][rdoc]-
算術演算子。差を計算します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
例:
# 差 4 - 1 #=> 3
- self -> Integer[permalink][rdoc]-
単項演算子の - です。 self の符号を反転させたものを返します。
例:
- 10 # => -10 - -10 # => 10
self / other -> Numeric[permalink][rdoc]-
除算の算術演算子。
other が Integer の場合、整商(整数の商)を Integer で返します。普通の商(剰余を考えない商)を越えない最大の整数をもって整商とします。
other が Float、Rational、Complex の場合、普通の商を other と同じクラスのインスタンスで返します。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
7 / 2 # => 3 7 / -2 # => -4 7 / 2.0 # => 3.5 7 / Rational(2, 1) # => (7/2) 7 / Complex(2, 0) # => ((7/2)+0i) begin 2 / 0 rescue => e e # => #<ZeroDivisionError: divided by 0> end[SEE_ALSO] Integer#div, Integer#fdiv, Numeric#quo
self < other -> bool[permalink][rdoc]-
比較演算子。数値として小さいか判定します。
- [PARAM] other:
- 比較対象の数値
- [RETURN]
- self よりも other が大きい場合 true を返します。そうでなければ false を返します。
例:
1 < 1 # => false 1 < 2 # => true
self << bits -> Integer[permalink][rdoc]-
シフト演算子。bits だけビットを左にシフトします。
- [PARAM] bits:
- シフトさせるビット数
例:
printf("%#b\n", 0b0101 << 1) # => 0b1010 p -1 << 1 # => -2 self <= other -> bool[permalink][rdoc]-
比較演算子。数値として等しいまたは小さいか判定します。
- [PARAM] other:
- 比較対象の数値
- [RETURN]
- self よりも other の方が大きい場合か、両者が等しい場合 true を返します。そうでなければ false を返します。
例:
1 <= 0 # => false 1 <= 1 # => true 1 <= 2 # => true
self <=> other -> -1 | 0 | 1 | nil[permalink][rdoc]-
self と other を比較して、self が大きい時に1、等しい時に 0、小さい時に-1、比較できない時に nil を返します。
- [PARAM] other:
- 比較対象の数値
- [RETURN]
- -1 か 0 か 1 か nil のいずれか
1 <=> 2 # => -1 1 <=> 1 # => 0 2 <=> 1 # => 1 2 <=> '' # => nil self == other -> bool[permalink][rdoc]self === other -> bool-
比較演算子。数値として等しいか判定します。
- [PARAM] other:
- 比較対象の数値
- [RETURN]
- self と other が等しい場合 true を返します。そうでなければ false を返します。
例:
1 == 2 # => false 1 == 1.0 # => true
self > other -> bool[permalink][rdoc]-
比較演算子。数値として大きいか判定します。
- [PARAM] other:
- 比較対象の数値
- [RETURN]
- self よりも other の方が小さい場合 true を返します。そうでなければ false を返します。
例:
1 > 0 # => true 1 > 1 # => false
self >= other -> bool[permalink][rdoc]-
比較演算子。数値として等しいまたは大きいか判定します。
- [PARAM] other:
- 比較対象の数値
- [RETURN]
- self よりも other の方が小さい場合か、両者が等しい場合 true を返します。そうでなければ false を返します。
例:
1 >= 0 # => true 1 >= 1 # => true 1 >= 2 # => false
self >> bits -> Integer[permalink][rdoc]-
シフト演算子。bits だけビットを右にシフトします。
右シフトは、符号ビット(最上位ビット(MSB))が保持されます。 bitsが実数の場合、小数点以下を切り捨てた値でシフトします。
- [PARAM] bits:
- シフトさせるビット数
例:
printf("%#b\n", 0b0101 >> 1) # => 0b10 p -1 >> 1 # => -1 self[nth] -> Integer[permalink][rdoc]-
nth 番目のビット(最下位ビット(LSB)が 0 番目)が立っている時 1 を、そうでなければ 0 を返します。
- [PARAM] nth:
- 何ビット目を指すかの数値
- [RETURN]
- 1 か 0
self[nth]=bit (つまりビットの修正) がないのは、Numeric 関連クラスが immutable であるためです。
例:
a = 0b11001100101010 30.downto(0) do |n| print a[n] end # => 0000000000000000011001100101010 a = 9**15 50.downto(0) do |n| print a[n] end # => 000101110110100000111000011110010100111100010111001
self ^ other -> Integer[permalink][rdoc]-
ビット二項演算子。排他的論理和を計算します。
- [PARAM] other:
- 数値
例:
1 ^ 1 # => 0 2 ^ 3 # => 1
abs -> Integer[permalink][rdoc]magnitude -> Integer-
self の絶対値を返します。
例:
-12345.abs # => 12345 12345.abs # => 12345 -1234567890987654321.abs # => 1234567890987654321
bit_length -> Integer[permalink][rdoc]-
self を表すのに必要なビット数を返します。
「必要なビット数」とは符号ビットを除く最上位ビットの位置の事を意味します。2**n の場合は n+1 になります。self にそのようなビットがない(0 や -1 である)場合は 0 を返します。
例: ceil(log2(int < 0 ? -int : int+1)) と同じ結果
(-2**12-1).bit_length # => 13 (-2**12).bit_length # => 12 (-2**12+1).bit_length # => 12 -0x101.bit_length # => 9 -0x100.bit_length # => 8 -0xff.bit_length # => 8 -2.bit_length # => 1 -1.bit_length # => 0 0.bit_length # => 0 1.bit_length # => 1 0xff.bit_length # => 8 0x100.bit_length # => 9 (2**12-1).bit_length # => 12 (2**12).bit_length # => 13 (2**12+1).bit_length # => 13
[SEE_ALSO] Integer#size
ceil(ndigits = 0) -> Integer | Float[permalink][rdoc]-
self と等しいかより大きな整数のうち最小のものを返します。
- [PARAM] ndigits:
- 10進数での小数点以下の有効桁数を整数で指定します。正の整数を指定した場合、Float を返します。小数点以下を、最大 n 桁にします。負の整数を指定した場合、Integer を返します。小数点位置から左に少なくとも n 個の 0 が並びます。
1.ceil # => 1 1.ceil(2) # => 1.0 18.ceil(-1) # => 20 (-18).ceil(-1) # => -10[SEE_ALSO] Numeric#ceil
chr -> String[permalink][rdoc]chr(encoding) -> String-
与えられたエンコーディング encoding において self を文字コードと見た時、それに対応する一文字からなる文字列を返します。引数無しで呼ばれた場合は self を US-ASCII、ASCII-8BIT、デフォルト内部エンコーディングの順で優先的に解釈します。
p 65.chr # => "A" p 0x79.chr.encoding # => #<Encoding:US_ASCII> p 0x80.chr.encoding # => #<Encoding:ASCII_8BIT> p 12354.chr Encoding::UTF_8 # => "あ" p 12354.chr Encoding::EUC_JP # => RangeError: invalid codepoint 0x3042 in EUC-JP p 12354.chr Encoding::ASCII_8BIT # => RangeError: 12354 out of char range p (2**32).chr # => RangeError: bignum out of char range
- [PARAM] encoding:
- エンコーディングを表すオブジェクト。Encoding::UTF_8、'shift_jis' など。
- [RETURN]
- 一文字からなる文字列
- [EXCEPTION] RangeError:
- self を与えられたエンコーディングで正しく解釈できない場合に発生します。
[SEE_ALSO] String#ord
denominator -> Integer[permalink][rdoc]-
分母(常に1)を返します。
- [RETURN]
- 分母を返します。
例:
10.denominator # => 1 -10.denominator # => 1
[SEE_ALSO] Integer#numerator
digits -> [Integer][permalink][rdoc]digits(base) -> [Integer]-
base を基数として self を位取り記数法で表記した数値を配列で返します。 base を指定しない場合の基数は 10 です。
16.digits # => [6, 1] 16.digits(16) # => [0, 1]
self は非負整数でなければいけません。非負整数でない場合は、Math::DomainErrorが発生します。
-10.digits # Math::DomainError: out of domain が発生
- [RETURN]
- 位取り記数法で表した時の数値の配列
- [PARAM] base:
- 基数となる数値。
- [EXCEPTION] ArgumentError:
- base に正の整数以外を指定した場合に発生します。
- [EXCEPTION] Math::DomainError:
- 非負整数以外に対して呼び出した場合に発生します。
div(other) -> Integer[permalink][rdoc]-
整商(整数の商)を返します。普通の商(剰余を考えない商)を越えない最大の整数をもって整商とします。
other が Integer オブジェクトの場合、Integer#/ の結果と一致します。
div に対応する剰余メソッドは modulo です。
- [PARAM] other:
- 二項演算の右側の引数(対象)
- [RETURN]
- 計算結果
7.div(2) # => 3 7.div(-2) # => -4 7.div(2.0) # => 3 7.div(Rational(2, 1)) # => 3 begin 2.div(0) rescue => e e # => #<ZeroDivisionError: divided by 0> end begin 2.div(0.0) rescue => e e # => #<ZeroDivisionError: divided by 0> # Integer#/ と違い、引数が Float でもゼロで割ることはできない end[SEE_ALSO] Integer#fdiv, Integer#/, Integer#modulo
divmod(other) -> [Integer, Numeric][permalink][rdoc]-
self を other で割った商 q と余り r を、 [q, r] という 2 要素の配列にして返します。 商 q は常に整数ですが、余り r は整数であるとは限りません。
- [PARAM] other:
- self を割る数。
[SEE_ALSO] Numeric#divmod
downto(min) {|n| ... } -> self[permalink][rdoc]downto(min) -> Enumerator-
self から min まで 1 ずつ減らしながらブロックを繰り返し実行します。 self < min であれば何もしません。
- [PARAM] min:
- 数値
- [RETURN]
- self を返します。
例:
5.downto(1) {|i| print i, " " } # => 5 4 3 2 1[SEE_ALSO] Integer#upto, Numeric#step, Integer#times
even? -> bool[permalink][rdoc]-
自身が偶数であれば真を返します。そうでない場合は偽を返します。
例:
10.even? # => true 5.even? # => false
fdiv(other) -> Numeric[permalink][rdoc]-
self を other で割った商を Float で返します。ただし Complex が関わる場合は例外です。その場合も成分は Float になります。
- [PARAM] other:
- self を割る数を指定します。
[SEE_ALSO] Numeric#quo, Numeric#div, Integer#div
floor(ndigits = 0) -> Integer | Float[permalink][rdoc]-
self と等しいかより小さな整数のうち最大のものを返します。
- [PARAM] ndigits:
- 10進数での小数点以下の有効桁数を整数で指定します。正の整数を指定した場合、Float を返します。小数点以下を、最大 n 桁にします。負の整数を指定した場合、Integer を返します。小数点位置から左に少なくとも n 個の 0 が並びます。
1.floor # => 1 1.floor(2) # => 1.0 18.floor(-1) # => 10 (-18).floor(-1) # => -20[SEE_ALSO] Numeric#floor
gcd(n) -> Integer[permalink][rdoc]-
自身と整数 n の最大公約数を返します。
- [EXCEPTION] ArgumentError:
- n に整数以外のものを指定すると発生します。
例:
2.gcd(2) # => 2 3.gcd(7) # => 1 3.gcd(-7) # => 1 ((1<<31)-1).gcd((1<<61)-1) # => 1
また、self や n が 0 だった場合は、0 ではない方の整数の絶対値を返します。
3.gcd(0) # => 3 0.gcd(-7) # => 7
[SEE_ALSO] Integer#lcm, Integer#gcdlcm
gcdlcm(n) -> [Integer][permalink][rdoc]-
自身と整数 n の最大公約数と最小公倍数の配列 [self.gcd(n), self.lcm(n)] を返します。
- [EXCEPTION] ArgumentError:
- n に整数以外のものを指定すると発生します。
例:
2.gcdlcm(2) # => [2, 2] 3.gcdlcm(-7) # => [1, 21] ((1<<31)-1).gcdlcm((1<<61)-1) # => [1, 4951760154835678088235319297]
[SEE_ALSO] Integer#gcd, Integer#lcm
to_s(base=10) -> String[permalink][rdoc]inspect(base=10) -> String-
整数を 10 進文字列表現に変換します。
引数を指定すれば、それを基数とした文字列表現に変換します。
p 10.to_s(2) # => "1010" p 10.to_s(8) # => "12" p 10.to_s(16) # => "a" p 35.to_s(36) # => "z"
- [RETURN]
- 数値の文字列表現
- [PARAM] base:
- 基数となる 2 - 36 の数値。
- [EXCEPTION] ArgumentError:
- base に 2 - 36 以外の数値を指定した場合に発生します。
integer? -> true[permalink][rdoc]-
常に真を返します。
例:
1.integer? # => true 1.0.integer? # => false
lcm(n) -> Integer[permalink][rdoc]-
自身と整数 n の最小公倍数を返します。
- [EXCEPTION] ArgumentError:
- n に整数以外のものを指定すると発生します。
例:
2.lcm(2) # => 2 3.lcm(-7) # => 21 ((1<<31)-1).lcm((1<<61)-1) # => 4951760154835678088235319297
また、self や n が 0 だった場合は、0 を返します。
3.lcm(0) # => 0 0.lcm(-7) # => 0
[SEE_ALSO] Integer#gcd, Integer#gcdlcm
next -> Integer[permalink][rdoc]succ -> Integer-
self の次の整数を返します。
例:
1.next #=> 2 (-1).next #=> 0 1.succ #=> 2 (-1).succ #=> 0
[SEE_ALSO] Integer#pred
numerator -> Integer[permalink][rdoc]-
分子(常に自身)を返します。
- [RETURN]
- 分子を返します。
例:
10.numerator # => 10 -10.numerator # => -10
[SEE_ALSO] Integer#denominator
odd? -> bool[permalink][rdoc]-
自身が奇数であれば真を返します。そうでない場合は偽を返します。
例:
5.odd? # => true 10.odd? # => false
ord -> Integer[permalink][rdoc]-
自身を返します。
10.ord #=> 10 # String#ord ?a.ord #=> 97
[SEE_ALSO] String#ord
pred -> Integer[permalink][rdoc]-
self から -1 した値を返します。
1.pred #=> 0 (-1).pred #=> -2
[SEE_ALSO] Integer#next
rationalize -> Rational[permalink][rdoc]rationalize(eps) -> Rational-
自身を Rational に変換します。
- [PARAM] eps:
- 許容する誤差
引数 eps は常に無視されます。
例:
2.rationalize # => (2/1) 2.rationalize(100) # => (2/1) 2.rationalize(0.1) # => (2/1)
remainder(other) -> Numeric[permalink][rdoc]-
self を other で割った余り r を返します。
r の符号は self と同じになります。
- [PARAM] other:
- self を割る数。
例:
5.remainder(3) # => 2 -5.remainder(3) # => -2 5.remainder(-3) # => 2 -5.remainder(-3) # => -2 -1234567890987654321.remainder(13731) # => -6966 -1234567890987654321.remainder(13731.24) # => -9906.22531493148
[SEE_ALSO] Integer#divmod, Integer#modulo, Numeric#modulo
round(ndigits = 0, half: :up) -> Integer | Float[permalink][rdoc]-
self ともっとも近い整数を返します。
- [PARAM] ndigits:
- 10進数での小数点以下の有効桁数を整数で指定します。正の整数を指定した場合、Float を返します。小数点以下を、最大 n 桁にします。負の整数を指定した場合、Integer を返します。小数点位置から左に少なくとも n 個の 0 が並びます。
- [PARAM] half:
- ちょうど半分の値の丸め方を指定します。サポートされている値は以下の通りです。
- :up or nil: 0から遠い方に丸められます。
- :even: もっとも近い偶数に丸められます。
- :down: 0に近い方に丸められます。
1.round # => 1 1.round(2) # => 1.0 15.round(-1) # => 20 (-15).round(-1) #=> -20 25.round(-1, half: :up) # => 30 25.round(-1, half: :down) # => 20 25.round(-1, half: :even) # => 20 35.round(-1, half: :up) # => 40 35.round(-1, half: :down) # => 30 35.round(-1, half: :even) # => 40 (-25).round(-1, half: :up) # => -30 (-25).round(-1, half: :down) # => -20 (-25).round(-1, half: :even) # => -20[SEE_ALSO] Numeric#round
size -> Integer[permalink][rdoc]-
整数の実装上のサイズをバイト数で返します。
例:
p 1.size p 0x1_0000_0000.size # => 4 8[SEE_ALSO] Integer#bit_length
times {|n| ... } -> self[permalink][rdoc]times -> Enumerator-
self 回だけ繰り返します。 self が正の整数でない場合は何もしません。
またブロックパラメータには 0 から self - 1 までの数値が渡されます。
3.times { puts "Hello, World!" } # Hello, World! と3行続いて表示される。 0.times { puts "Hello, World!" } # 何も表示されない。 5.times {|n| print n } # 01234 と表示される。[SEE_ALSO] Integer#upto, Integer#downto, Numeric#step
to_f -> Float[permalink][rdoc]-
self を浮動小数点数(Float)に変換します。
self が Float の範囲に収まらない場合、Float::INFINITY を返します。
1.to_f # => 1.0 (Float::MAX.to_i * 2).to_f # => Infinity (-Float::MAX.to_i * 2).to_f # => -Infinity to_i -> self[permalink][rdoc]to_int -> self-
self を返します。
例:
10.to_i # => 10
to_r -> Rational[permalink][rdoc]-
自身を Rational に変換します。
例:
1.to_r # => (1/1) (1<<64).to_r # => (18446744073709551616/1)
truncate(ndigits = 0) -> Integer | Float[permalink][rdoc]-
0 から self までの整数で、自身にもっとも近い整数を返します。
- [PARAM] ndigits:
- 10進数での小数点以下の有効桁数を整数で指定します。正の整数を指定した場合、Float を返します。小数点以下を、最大 n 桁にします。負の整数を指定した場合、Integer を返します。小数点位置から左に少なくとも n 個の 0 が並びます。
1.truncate # => 1 1.truncate(2) # => 1.0 18.truncate(-1) #=> 10 (-18).truncate(-1) #=> -10[SEE_ALSO] Numeric#truncate
upto(max) {|n| ... } -> Integer[permalink][rdoc]upto(max) -> Enumerator-
self から max まで 1 ずつ増やしながら繰り返します。 self > max であれば何もしません。
- [PARAM] max:
- 数値
- [RETURN]
- self を返します。
例:
5.upto(10) {|i| print i, " " } # => 5 6 7 8 9 10[SEE_ALSO] Integer#downto, Numeric#step, Integer#times
self | other -> Integer[permalink][rdoc]-
ビット二項演算子。論理和を計算します。
- [PARAM] other:
- 数値
例:
1 | 1 # => 1 2 | 3 # => 3
~ self -> Integer[permalink][rdoc]-
ビット演算子。否定を計算します。
例:
~1 # => -2 ~3 # => -4 ~-4 # => 3
追加されるメソッド
each_prime(upper_bound) {|prime| ... } -> object[permalink][rdoc] [added by prime]each_prime(upper_bound) -> Enumerator[added by prime]-
全ての素数を列挙し、それぞれの素数をブロックに渡して評価します。
- [PARAM] upper_bound:
- 任意の正の整数を指定します。列挙の上界です。 nil が与えられた場合は無限に列挙し続けます。
- [RETURN]
- ブロックの最後に評価された値を返します。ブロックが与えられなかった場合は、Enumerator と互換性のある外部イテレータを返します。
[SEE_ALSO] Prime#each
from_prime_division(pd) -> Integer[permalink][rdoc] [added by prime]-
素因数分解された結果を元の数値に戻します。
- [PARAM] pd:
- 整数のペアの配列を指定します。含まれているペアの第一要素は素因数を、第二要素はその素因数の指数をあらわします。
[SEE_ALSO] Prime#int_from_prime_division
例:
require 'prime' Prime.int_from_prime_division([[2,2], [3,1]]) #=> 12 Prime.int_from_prime_division([[2,2], [3,2]]) #=> 36
prime? -> bool[permalink][rdoc] [added by prime]-
自身が素数である場合、真を返します。そうでない場合は偽を返します。
例:
require 'prime' 1.prime? # => false 2.prime? # => true
[SEE_ALSO] Prime#prime?
prime_division(generator = Prime::Generator23.new) -> [[Integer, Integer]][permalink][rdoc] [added by prime]-
自身を素因数分解した結果を返します。
- [PARAM] generator:
- 素数生成器のインスタンスを指定します。
- [RETURN]
- 素因数とその指数から成るペアを要素とする配列です。つまり、戻り値の各要素は2要素の配列 [n,e] であり、それぞれの内部配列の第1要素 n は self の素因数、第2要素は n**e が self を割り切る最大の自然数 e です。
- [EXCEPTION] ZeroDivisionError:
- self がゼロである場合に発生します。
[SEE_ALSO] Prime#prime_division
例:
require 'prime' 12.prime_division #=> [[2,2], [3,1]] 10.prime_division #=> [[2,1], [5,1]]
to_bn -> OpenSSL::BN[permalink][rdoc] [added by openssl]-
Integer を同じ数を表す OpenSSL::BN のオブジェクトに変換します。
現在のバージョンでは正しく実装されていません。
to_d -> BigDecimal[permalink][rdoc] [added by bigdecimal/util]-
自身を BigDecimal に変換します。BigDecimal(self) と同じです。
- [RETURN]
- BigDecimal に変換したオブジェクト
再定義されたメソッド
self / other -> Numeric[permalink][rdoc] [redefined by mathn]-
Fixnum#quo と同じ働きをします(有理数または整数を返します)。
例:
10 / 3 # => 3 require 'mathn' 10 / 3 # => (10/3)