aliases: Fixnum, Bignum
dynamic include: JSON::Generator::GeneratorMethods::Integer (by json)
整数クラスです。
整数オブジェクトに特異メソッドを追加する事はできません。追加した場合、 TypeError が発生します。
2.4.0 から Fixnum, Bignum は Integerに統合されました。 2.4.0 からはどちらも Integer クラスのエイリアスとなっています。
self % other -> Numeric
[permalink][rdoc]modulo(other) -> Numeric
算術演算子。剰余を計算します。
例:
# 剰余 13 % 4 # => 1 13 % -4 # => -3 -13 % 4 # => 3 -13 % -4 # => -1
self & other -> Integer
[permalink][rdoc]ビット二項演算子。論理積を計算します。
例:
1 & 1 # => 1 2 & 3 # => 2
self * other -> Numeric
[permalink][rdoc]算術演算子。積を計算します。
例:
# 積 2 * 3 # => 6
self ** other -> Numeric
[permalink][rdoc]算術演算子。冪(べき乗)を計算します。
例:
2 ** 3 # => 8 2 ** 0 # => 1 0 ** 0 # => 1
self + other -> Numeric
[permalink][rdoc]算術演算子。和を計算します。
例:
# 和 3 + 4 # => 7
self - other -> Numeric
[permalink][rdoc]算術演算子。差を計算します。
例:
# 差 4 - 1 #=> 3
- self -> Integer
[permalink][rdoc]単項演算子の - です。 self の符号を反転させたものを返します。
例:
- 10 # => -10 - -10 # => 10
self / other -> Numeric
[permalink][rdoc] [redefined by mathn]
Fixnum#quo と同じ働きをします(有理数または整数を返します)。
例:
10 / 3 # => 3 require 'mathn' 10 / 3 # => (10/3)
self / other -> Numeric
[permalink][rdoc]除算の算術演算子。
other が Integer の場合、整商(整数の商)を Integer で返します。普通の商(剰余を考えない商)を越えない最大の整数をもって整商とします。
other が Float、Rational、Complex の場合、普通の商を other と同じクラスのインスタンスで返します。
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]比較演算子。数値として小さいか判定します。
例:
1 < 1 # => false 1 < 2 # => true
self << bits -> Integer
[permalink][rdoc]シフト演算子。bits だけビットを左にシフトします。
例:
printf("%#b\n", 0b0101 << 1) # => 0b1010 p -1 << 1 # => -2
self <= other -> bool
[permalink][rdoc]比較演算子。数値として等しいまたは小さいか判定します。
例:
1 <= 0 # => false 1 <= 1 # => true 1 <= 2 # => true
self <=> other -> -1 | 0 | 1 | nil
[permalink][rdoc]self と other を比較して、self が大きい時に1、等しい時に 0、小さい時に-1、比較できない時に nil を返します。
1 <=> 2 # => -1
1 <=> 1 # => 0
2 <=> 1 # => 1
2 <=> '' # => nil
self == other -> bool
[permalink][rdoc]self === other -> bool
比較演算子。数値として等しいか判定します。
例:
1 == 2 # => false 1 == 1.0 # => true
self > other -> bool
[permalink][rdoc]比較演算子。数値として大きいか判定します。
例:
1 > 0 # => true 1 > 1 # => false
self >= other -> bool
[permalink][rdoc]比較演算子。数値として等しいまたは大きいか判定します。
例:
1 >= 0 # => true 1 >= 1 # => true 1 >= 2 # => false
self >> bits -> Integer
[permalink][rdoc]シフト演算子。bits だけビットを右にシフトします。
右シフトは、符号ビット(最上位ビット(MSB))が保持されます。 bitsが実数の場合、小数点以下を切り捨てた値でシフトします。
例:
printf("%#b\n", 0b0101 >> 1) # => 0b10 p -1 >> 1 # => -1
self[nth] -> Integer
[permalink][rdoc]nth 番目のビット(最下位ビット(LSB)が 0 番目)が立っている時 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]ビット二項演算子。排他的論理和を計算します。
例:
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 と等しいかより大きな整数のうち最小のものを返します。
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
[SEE_ALSO] String#ord
denominator -> Integer
[permalink][rdoc]分母(常に1)を返します。
例:
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 が発生
div(other) -> Integer
[permalink][rdoc]整商(整数の商)を返します。普通の商(剰余を考えない商)を越えない最大の整数をもって整商とします。
other が Integer オブジェクトの場合、Integer#/ の結果と一致します。
div に対応する剰余メソッドは modulo です。
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 は整数であるとは限りません。
[SEE_ALSO] Numeric#divmod
downto(min) {|n| ... } -> self
[permalink][rdoc]downto(min) -> Enumerator
self から min まで 1 ずつ減らしながらブロックを繰り返し実行します。 self < min であれば何もしません。
例:
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 になります。
[SEE_ALSO] Numeric#quo, Numeric#div, Integer#div
floor(ndigits = 0) -> Integer | Float
[permalink][rdoc]self と等しいかより小さな整数のうち最大のものを返します。
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 の最大公約数を返します。
例:
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)] を返します。
例:
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"
integer? -> true
[permalink][rdoc]常に真を返します。
例:
1.integer? # => true 1.0.integer? # => false
lcm(n) -> Integer
[permalink][rdoc]自身と整数 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]分子(常に自身)を返します。
例:
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 に変換します。
引数 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 と同じになります。
例:
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 ともっとも近い整数を返します。
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 までの整数で、自身にもっとも近い整数を返します。
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 であれば何もしません。
例:
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]ビット二項演算子。論理和を計算します。
例:
1 | 1 # => 1 2 | 3 # => 3
~ self -> Integer
[permalink][rdoc]ビット演算子。否定を計算します。
例:
~1 # => -2 ~3 # => -4 ~-4 # => 3