dynamic include: JSON::Generator::GeneratorMethods::Integer (by json)
要約
整数を表すクラスです。
整数オブジェクトに特異メソッドを追加する事はできません。追加した場合、 TypeError が発生します。
かつて Integer クラスのエイリアスであった Fixnum と Bignum は Ruby 3.2 で削除されました。
Integer には Integer#~ や Integer#& のようなビット論理演算がいくつか定義されています。これらは、整数を「2 の補数表記」したビット列とみなして、位ごとに論理演算を行うものです。
Integer のビット論理演算において、整数は以下の例のように左(上位)に無限に 0 または 1 が続くビット列として扱われます(.. は、その右隣に書かれた数字が左に向かって無限に続くことを意味する)。
| 10 進表記 | 2 進表記 | ビット列 |
|---|---|---|
6 | 0b110 | ..0110 |
1 | 0b1 | ..01 |
0 | 0b0 | ..0 |
-1 | -0b1 | ..1 |
-6 | -0b110 | ..1010 |
目次
- 特異メソッド
- インスタンスメソッド
-
- %
- &
- *
- **
- +
- -
- -@
- /
- <
- <<
- <=
- <=>
- ==
- ===
- >
- >=
- >>
- []
- ^
- |
- ~
- abs
- allbits?
- anybits?
- bit_length
- ceil
- ceildiv
- chr
- denominator
- digits
- div
- divmod
- downto
- even?
- fdiv
- floor
- gcd
- gcdlcm
- inspect
- integer?
- lcm
- magnitude
- modulo
- next
- nobits?
- numerator
- odd?
- ord
- pow
- pred
- rationalize
- remainder
- round
- size
- succ
- times
- to_f
- to_i
- to_int
- to_r
- to_s
- truncate
- upto
- 追加されるメソッド
継承しているメソッド
- Numericから継承しているメソッド
- Comparableから継承しているメソッド
動的includeで追加されるメソッド
- JSON::Generator::GeneratorMethods::Integer (by json)
特異メソッド
sqrt(n) -> IntegerRuby 2.5.0 から[permalink][rdoc][edit]-
非負整数
nの整数の平方根を返します。すなわちnの平方根以下の最大の非負整数を返します。- [PARAM]
n: -
非負整数。
Integerではない場合は、最初にIntegerに変換されます。 - [EXCEPTION]
Math::DomainError: -
nが負の整数のときに発生します。
p Integer.sqrt(0) # => 0 p Integer.sqrt(1) # => 1 p Integer.sqrt(24) # => 4 p Integer.sqrt(25) # => 5 p Integer.sqrt(10**400) == 10**200 # => trueMath.sqrt(n).floorと数学的には同じ意味ですが、後者は浮動小数点数の精度の限界によって真の値とは違う結果になることがあります。p Integer.sqrt(10**46) # => 100000000000000000000000 p Math.sqrt(10**46).floor # => 99999999999999991611392 (!)[SEE_ALSO] Math.#sqrt
- [PARAM]
try_convert(obj) -> Integer | nilRuby 3.1 から[permalink][rdoc][edit]-
objをIntegerに変換するためのメソッドです。objがIntegerならそのままobjを返します。objがIntegerでないとき、to_intメソッドに応答するならobj.to_intの結果を返し、応答しないならnilを返します。- [PARAM]
obj: - 変換する任意のオブジェクト
- [EXCEPTION]
TypeError: -
obj.to_intがIntegerオブジェクトを返さなかった場合に発生します。
変換できない例p Integer.try_convert(1) # => 1 p Integer.try_convert(1.25) # => 1p Integer.try_convert("1") # => nil # String#to_int メソッドは存在しないため - [PARAM]
インスタンスメソッド
self % other -> NumericRuby 2.4.0 から[permalink][rdoc][edit]modulo(other) -> Numeric-
selfをotherで割った余り(剰余)を返します。Integerオブジェクトを左項とする算術演算子%はこのメソッドの呼び出しになります。- [PARAM]
other: -
selfに対する除数
p 5 % 3 # => 2 p 5 % -3 # => -1 p -5 % 3 # => 1 p -5 % -3 # => -2 - [PARAM]
self & other -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
selfとotherのビット論理積を返します。Integerオブジェクトを左項とする二項演算子&はこのメソッドの呼び出しになります。- [PARAM]
other: - 数値
p 1 & 1 # => 1 p 2 & 3 # => 2 - [PARAM]
self * other -> NumericRuby 2.4.0 から[permalink][rdoc][edit]-
selfにotherを掛けた値(=積)を返します。Integerオブジェクトを左項とする算術演算子*はこのメソッドの呼び出しになります。- [PARAM]
other: -
selfに対する乗数
p 2 * 3 # => 6 - [PARAM]
self ** other -> Numeric[permalink][rdoc][edit]pow(other) -> NumericRuby 2.5.0 からpow(other, modulo) -> IntegerRuby 2.5.0 から-
selfのother乗を返します。Integerオブジェクトを左項とする算術演算子**はこのメソッドの呼び出しになります。- [PARAM]
other: -
selfに対する冪指数(べきしすう) - [PARAM]
modulo: -
指定すると、計算途中に巨大な値を生成せずに
(self**other) % moduloと同じ結果を返します。 - [EXCEPTION]
TypeError: -
2引数
powでotherやmoduloにInteger以外を指定した場合に発生します。 - [EXCEPTION]
RangeError: -
2引数
powでotherに負の数を指定した場合に発生します。
p 2 ** 3 # => 8 p 2 ** 0 # => 1 p 0 ** 0 # => 1 p 3.pow(3, 8) # => 3 p 3.pow(3, -8) # => -5 p 3.pow(2, -2) # => -1 p -3.pow(3, 8) # => 5 p -3.pow(3, -8) # => -3 p 5.pow(2, -8) # => -7結果が巨大すぎる整数になりそうなとき、警告を出したうえで Float::INFINITY を返します。
計算を放棄して Float::INFINITY を返す例p 100**9999999 # => warning: in a**b, b may be too big # Infinity判定の閾値は変わりえます。
[SEE_ALSO] BigDecimal#power
- [PARAM]
self + other -> NumericRuby 2.4.0 から[permalink][rdoc][edit]-
selfにotherを足した値(=和)を返します。Integerオブジェクトを左項とする算術演算子+はこのメソッドの呼び出しになります。- [PARAM]
other: -
selfに加算する数値
p 3 + 4 # => 7 - [PARAM]
self - other -> NumericRuby 2.4.0 から[permalink][rdoc][edit]-
selfからotherを引いた値(=差)を返します。Integerオブジェクトを左項とする算術演算子-はこのメソッドの呼び出しになります。- [PARAM]
other: -
selfから減算する数値
p 4 - 1 # => 3 - [PARAM]
- self -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
selfの符号を反転させたものを返します。Integerオブジェクトに対する単項演算子-はこのメソッドの呼び出しになります。p(- 10) # => -10 p(- -10) # => 10 self / other -> Numeric[permalink][rdoc][edit]-
selfをotherで割った値(=商)を返します。otherのクラスによって除算の種類が異なります。otherがIntegerの場合、整商(整数の商)をIntegerで返します。普通の商(剰余を考えない商)を越えない最大の整数をもって整商とします。otherが Float、Rational、Complex の場合、普通の商をotherと同じクラスのインスタンスで返します。Integerオブジェクトを左項とする算術演算子/はこのメソッドの呼び出しになります。- [PARAM]
other: -
selfに対する除数
# 整商を返す例 p 7 / 2 # => 3 p 7 / -2 # => -4 # 普通の商を返す例 p 7 / 2.0 # => 3.5 p 7 / 2r # => (7/2) p 7 / (2+0i) # => ((7/2)+0i) begin 2 / 0 rescue => e e # => #<ZeroDivisionError: divided by 0> end[SEE_ALSO] Integer#div, Integer#fdiv, Numeric#quo
- [PARAM]
self < other -> boolRuby 2.4.0 から[permalink][rdoc][edit]-
selfを数値としてotherと比較し、selfのほうが小さければtrueを、そうでなければfalseを返します。otherが Complex オブジェクトのとき、たとえ虚部がゼロでもNoMethodErrorが発生します。otherが NaN のとき、falseを返します。otherが数値でないとき、ArgumentErrorが発生します。Integerオブジェクトを左項とする比較演算子<はこのメソッドの呼び出しになります。- [PARAM]
other: - 比較対象の数値
- [RETURN]
-
selfがotherより小さければtrueを、そうでなければfalseを返します。
p 1 < 1 # => false p 1 < 2 # => true p 1 < Float::NAN # => false p 1 < Complex(2, 0) # ~> NoMethodError p 1 < "2" # ~> ArgumentError: comparison of Integer with String failed - [PARAM]
self << bits -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
selfをbitsだけ左にビットシフトした整数を返します。Integerオブジェクトを左項とするシフト演算子<<はこのメソッドの呼び出しになります。- [PARAM]
bits: - シフトさせるビット数
printf("%#b\n", 0b0101 << 1) # => 0b1010 p -1 << 1 # => -2 - [PARAM]
self <= other -> boolRuby 2.4.0 から[permalink][rdoc][edit]-
selfを数値としてotherと比較し、selfがotherより小さいか等しければtrueを、そうでなければfalseを返します。otherが Complex オブジェクトのとき、たとえ虚部がゼロでもNoMethodErrorが発生します。otherが NaN のとき、falseを返します。otherが数値でないとき、ArgumentErrorが発生します。Integerオブジェクトを左項とする比較演算子<=はこのメソッドの呼び出しになります。- [PARAM]
other: - 比較対象の数値
- [RETURN]
-
selfがotherより小さいか等しければtrueを、そうでなければfalseを返します。
p 1 <= 0 # => false p 1 <= 1 # => true p 1 <= 2 # => true p 1 <= Float::NAN # => false p 1 <= Complex(2, 0) # ~> NoMethodError p 1 <= "2" # ~> ArgumentError: comparison of Integer with String failed - [PARAM]
self <=> other -> -1 | 0 | 1 | nilRuby 2.4.0 から[permalink][rdoc][edit]-
selfをotherと比較して、selfのほうが大きいときに1、等しいときに0、小さいときに-1、比較できないときにnilを返します。Integerオブジェクトを左項とする二項演算子<=>はこのメソッドの呼び出しになります。- [PARAM]
other: - 比較対象
- [RETURN]
-
-1か0か1かnilのいずれか
p 1 <=> 2 # => -1 p 1 <=> 1 # => 0 p 2 <=> 1 # => 1 p 2 <=> '1' # => nil - [PARAM]
self == other -> boolRuby 2.4.0 から[permalink][rdoc][edit]self === other -> bool-
selfが数値としてotherと等しければtrueを返し、そうでないときfalseを返します。otherが数値でないときはfalseを返します。Integerオブジェクトを左項とする比較演算子==および===はこのメソッドの呼び出しになります。- [PARAM]
other: - 比較対象
- [RETURN]
-
selfとotherが等しい場合trueを返します。そうでなければfalseを返します。
p 1 == 2 # => false p 1 == 1.0 # => true p 1 == "1" # => false - [PARAM]
self > other -> boolRuby 2.4.0 から[permalink][rdoc][edit]-
selfを数値としてotherと比較し、selfがotherより大きければtrueを、そうでなければfalseを返します。otherが Complex オブジェクトのとき、たとえ虚部がゼロでもNoMethodErrorが発生します。otherが NaN のとき、falseを返します。otherが数値でないとき、ArgumentErrorが発生します。Integerオブジェクトを左項とする比較演算子>はこのメソッドの呼び出しになります。- [PARAM]
other: - 比較対象の数値
- [RETURN]
-
selfがotherより大きければtrueを、そうでなければfalseを返します。
p 1 > 0 # => true p 1 > 1 # => false p 1 > Float::NAN # => false p 1 > Complex(0, 0) # ~> NoMethodError p 1 > "0" # ~> ArgumentError: comparison of Integer with String failed - [PARAM]
self >= other -> boolRuby 2.4.0 から[permalink][rdoc][edit]-
selfを数値としてotherと比較し、selfがotherより大きいか等しければtrueを、そうでなければfalseを返します。otherが Complex オブジェクトのとき、たとえ虚部がゼロでもNoMethodErrorが発生します。otherが NaN のとき、falseを返します。otherが数値でないとき、ArgumentErrorが発生します。Integerオブジェクトを左項とする比較演算子>=はこのメソッドの呼び出しになります。- [PARAM]
other: - 比較対象の数値
- [RETURN]
-
selfがotherより大きいか等しければtrueを、そうでなければfalseを返します。
p 1 >= 0 # => true p 1 >= 1 # => true p 1 >= 2 # => false p 1 >= Float::NAN # => false p 1 >= Complex(0, 0) # ~> NoMethodError p 1 >= "0" # ~> ArgumentError: comparison of Integer with String failed - [PARAM]
self >> bits -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
selfをbitsだけ右にビットシフトした整数を返します。Integerオブジェクトを左項とするシフト演算子>>はこのメソッドの呼び出しになります。右シフトは、符号ビット(最上位ビット(MSB))が保持されます。
bitsが実数の場合、小数点以下を切り捨てた値でシフトします。- [PARAM]
bits: - シフトさせるビット数
printf("%#b\n", 0b0101 >> 1) # => 0b10 p -1 >> 1 # => -1 - [PARAM]
self[nth] -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]self[nth, len] -> Integerself[range] -> Integer-
nth番目のビット(最下位ビット(LSB)が 0 番目)が立っているとき1を、そうでなければ0を返します。- [PARAM]
nth: - 何ビット目を指すかの数値
- [PARAM]
len: - 何ビット分を返すか
- [PARAM]
range: - 返すビットの範囲
- [RETURN]
-
self[nth]は1か0 - [RETURN]
-
self[i, len]は(n >> i) & ((1 << len) - 1)と同じ - [RETURN]
-
self[i..j]は(n >> i) & ((1 << (j - i + 1)) - 1)と同じ - [RETURN]
-
self[i...j]は(n >> i) & ((1 << (j - i)) - 1)と同じ - [RETURN]
-
self[i..]は(n >> i)と同じ - [RETURN]
-
self[..j]はn & ((1 << (j + 1)) - 1)が0なら0 - [RETURN]
-
self[...j]はn & ((1 << j) - 1)が0なら0 - [EXCEPTION]
ArgumentError: -
self[..j]でn & ((1 << (j + 1)) - 1)が0以外のとき - [EXCEPTION]
ArgumentError: -
self[...j]でn & ((1 << j) - 1)が0以外のとき
a = 0b11001100101010 30.downto(0) {|n| print a[n] } # => 0000000000000000011001100101010 a = 9**15 50.downto(0) {|n| print a[n] } # => 000101110110100000111000011110010100111100010111001n[i]は(n >> i) & 1と等価なので、負のインデックスは常に0を返します。
複数ビットの例p 255[-1] # => 0p 0b01001101[2, 4] # => 0b0011 p 0b01001100[2..5] # => 0b0011 p 0b01001100[2...6] # => 0b0011 # ^^^^self[nth]=bit(つまりビットの修正) がないのは、Numeric関連クラスが immutable であるためです。 - [PARAM]
self ^ other -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
selfとotherのビット排他的論理和を返します。Integerオブジェクトを左項とする二項演算子^はこのメソッドの呼び出しになります。- [PARAM]
other: - 数値
p 1 ^ 1 # => 0 p 2 ^ 3 # => 1 - [PARAM]
abs -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]magnitude -> Integer-
selfの絶対値を返します。p -12345.abs # => 12345 p 12345.abs # => 12345 p -1234567890987654321.abs # => 1234567890987654321 allbits?(mask) -> boolRuby 2.5.0 から[permalink][rdoc][edit]-
maskで1が立っているビットがすべてselfでも1ならtrueを返します。self & mask == maskと等価です。- [PARAM]
mask: - ビットマスクを整数で指定します。
p 42.allbits?(42) # => true p 0b1010_1010.allbits?(0b1000_0010) # => true p 0b1010_1010.allbits?(0b1000_0001) # => false p 0b1000_0010.allbits?(0b1010_1010) # => false[SEE_ALSO] Integer#anybits?
[SEE_ALSO] Integer#nobits?
- [PARAM]
anybits?(mask) -> boolRuby 2.5.0 から[permalink][rdoc][edit]-
self & maskのいずれかのビットが1ならtrueを返します。self & mask != 0と等価です。- [PARAM]
mask: - ビットマスクを整数で指定します。
p 42.anybits?(42) # => true p 0b1010_1010.anybits?(0b1000_0010) # => true p 0b1010_1010.anybits?(0b1000_0001) # => true p 0b1000_0010.anybits?(0b0010_1100) # => false[SEE_ALSO] Integer#allbits?
[SEE_ALSO] Integer#nobits?
- [PARAM]
bit_length -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
selfを表すのに必要なビット数を返します。「必要なビット数」とは符号ビットを除く最上位ビットの位置の事を意味します。
例: ceil(log2(int < 0 ? -int : int+1)) と同じ結果2**nの場合はn+1になります。selfにそのようなビットがない(0や-1である)場合は0を返します。p (-2**12-1).bit_length # => 13 p (-2**12).bit_length # => 12 p (-2**12+1).bit_length # => 12 p -0x101.bit_length # => 9 p -0x100.bit_length # => 8 p -0xff.bit_length # => 8 p -2.bit_length # => 1 p -1.bit_length # => 0 p 0.bit_length # => 0 p 1.bit_length # => 1 p 0xff.bit_length # => 8 p 0x100.bit_length # => 9 p (2**12-1).bit_length # => 12 p (2**12).bit_length # => 13 p (2**12+1).bit_length # => 13[SEE_ALSO] Integer#size
ceil(ndigits = 0) -> Integer[permalink][rdoc][edit]-
selfと等しいかより大きな整数のうち最小のものを返します。- [PARAM]
ndigits: -
10進数での小数点以下の有効桁数を整数で指定します。負の整数を指定した場合、小数点位置から左に少なくとも
n個の0が並びます。
p 1.ceil # => 1 p 1.ceil(2) # => 1 p 18.ceil(-1) # => 20 p (-18).ceil(-1) # => -10[SEE_ALSO] Numeric#ceil
- [PARAM]
ceildiv(other) -> IntegerRuby 3.2 から[permalink][rdoc][edit]-
selfをotherで割り、その(剰余を考えない)商を整数に切り上げたものを返します。すなわち、selfをotherで割った商をqとすると、q以上で最小の整数を返します。- [PARAM]
other: -
selfに対する除数
使い道の例p 3.ceildiv(3) # => 1 p 4.ceildiv(3) # => 2 p 5.ceildiv(3) # => 2 p 3.ceildiv(1.2) # => 3 p -5.ceildiv(3) # => -1 p -5.ceildiv(-3) # => 2# n 個の品物を m 個入るケースで運ぶとき、ケースはいくつ必要か n = 31 m = 7 p n.ceildiv(m) # => 5 # n 個の品物を m 人になるべく均等に(差が 1 以下に収まるように)分配するとき # 多い人は何個受け取るか、という問題と同じ答え - [PARAM]
chr -> String[permalink][rdoc][edit]chr(encoding) -> String-
selfを文字コードとして見たときに、引数で与えたエンコーディングencodingに対応する文字を返します。p 65.chr # => "A" p 12354.chr # ~> RangeError: 12354 out of char range p 12354.chr(Encoding::UTF_8) # => "あ" 12354.chr(Encoding::EUC_JP) # ~> RangeError: invalid codepoint 0x3042 in EUC-JP引数無しで呼ばれた場合は
selfを US-ASCII、ASCII-8BIT、デフォルト内部エンコーディングの順で優先的に解釈します。p 0x79.chr.encoding # => #<Encoding:US_ASCII> p 0x80.chr.encoding # => #<Encoding:ASCII_8BIT>- [PARAM]
encoding: -
エンコーディングを表すオブジェクト。Encoding::UTF_8、
"shift_jis"など。 - [RETURN]
- 一文字からなる文字列
- [EXCEPTION]
RangeError: -
selfを与えられたエンコーディングで正しく解釈できない場合に発生します。
[SEE_ALSO] String#ord Encoding.default_internal
- [PARAM]
denominator -> Integer[permalink][rdoc][edit]-
常に
1を返します。これは
selfを既約分数で表したときの分母(denominator)です。p 10.denominator # => 1 p -10.denominator # => 1[SEE_ALSO] Integer#numerator, Rational#denominator
digits -> [Integer]Ruby 2.4.0 から[permalink][rdoc][edit]digits(base) -> [Integer]-
baseを基数としてselfを位取り記数法で表記した各桁の数を並べた配列を返します。配列の先頭が最下位桁の数です。baseを指定しない場合の基数は10です。p 123.digits # => [3, 2, 1] p 8.digits(2) # => [0, 0, 0, 1] p 0xF8.digits(16) # => [8, 15]selfが0のとき返り値は[0]です。この場合を除き、返り値の配列の末尾の要素は必ず正になります。selfが負の場合、Math::DomainError が発生します。-10.digits # ~> Math::DomainError: out of domain- [RETURN]
- 位取り記数法で表したときの各桁の数の配列
- [PARAM]
base: - 基数となる数値。
- [EXCEPTION]
ArgumentError: -
baseに正の整数以外を指定した場合に発生します。 - [EXCEPTION]
Math::DomainError: - 非負整数以外に対して呼び出した場合に発生します。
div(other) -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
selfを整除法によってotherで割った値(=整商)を返します。普通の商(剰余を考えない商)を越えない最大の整数をもって整商とします。
otherがIntegerオブジェクトの場合、Integer#/ の結果と一致します。divに対応する剰余メソッドは Integer#modulo です。- [PARAM]
other: -
selfに対する除数
p 7.div(2) # => 3 p 7.div(-2) # => -4 p 7.div(2.0) # => 3 p 7.div(2r) # => 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
- [PARAM]
divmod(other) -> [Integer, Numeric]Ruby 2.4.0 から[permalink][rdoc][edit]-
selfをotherで割った商qと余りrを、[q, r]という 2 要素の配列にして返します。商qは常に整数ですが、余りrは整数であるとは限りません。- [PARAM]
other: -
selfに対する除数
[SEE_ALSO] Numeric#divmod
- [PARAM]
downto(min) {|n| ... } -> self[permalink][rdoc][edit]downto(min) -> Enumerator-
selfからminまで1ずつ減らしながらブロックを繰り返し実行します。self < minであれば何もしません。- [PARAM]
min: - 数値
- [RETURN]
-
selfを返します。
2.downto(-1) { |i| p i } # => 2 # 1 # 0 # -1[SEE_ALSO] Integer#upto, Numeric#step, Integer#times
- [PARAM]
even? -> bool[permalink][rdoc][edit]-
selfが偶数ならtrueを返し、そうでないならfalseを返します。p 10.even? # => true p 5.even? # => false fdiv(other) -> NumericRuby 2.4.0 から[permalink][rdoc][edit]-
selfをotherで割った商を Float で返します。ただし Complex が関わる場合は例外です。その場合も成分はFloatになります。- [PARAM]
other: -
selfに対する除数
654321.fdiv(13731) # => 47.652829364212366 654321.fdiv(13731.24) # => 47.65199646936475 -1234567890987654321.fdiv(13731) # => -89910996357705.52 -1234567890987654321.fdiv(13731.24) # => -89909424858035.72[SEE_ALSO] Numeric#quo, Numeric#div, Integer#div
- [PARAM]
floor(ndigits = 0) -> Integer[permalink][rdoc][edit]-
selfと等しいかより小さな整数のうち最大のものを返します。- [PARAM]
ndigits: -
10進数での小数点以下の有効桁数を整数で指定します。負の整数を指定した場合、小数点位置から左に少なくとも
n個の0が並びます。
p 1.floor # => 1 p 1.floor(2) # => 1 p 18.floor(-1) # => 10 p (-18).floor(-1) # => -20[SEE_ALSO] Numeric#floor
- [PARAM]
gcd(n) -> Integer[permalink][rdoc][edit]-
selfと整数nの最大公約数を返します。- [EXCEPTION]
ArgumentError: -
nに整数以外のものを指定すると発生します。
p 2.gcd(2) # => 2 p 3.gcd(7) # => 1 p 3.gcd(-7) # => 1 p ((1<<31)-1).gcd((1<<61)-1) # => 1また、
selfやnが0だった場合は、0ではない方の整数の絶対値を返します。p 3.gcd(0) # => 3 p 0.gcd(-7) # => 7[SEE_ALSO] Integer#lcm, Integer#gcdlcm
- [EXCEPTION]
gcdlcm(n) -> [Integer][permalink][rdoc][edit]-
selfと整数nの最大公約数と最小公倍数の配列[self.gcd(n), self.lcm(n)]を返します。- [EXCEPTION]
ArgumentError: -
nに整数以外のものを指定すると発生します。
p 2.gcdlcm(2) # => [2, 2] p 3.gcdlcm(-7) # => [1, 21] p ((1<<31)-1).gcdlcm((1<<61)-1) # => [1, 4951760154835678088235319297][SEE_ALSO] Integer#gcd, Integer#lcm
- [EXCEPTION]
to_s(base=10) -> String[permalink][rdoc][edit]inspect(base=10) -> String-
baseを基数とする位取り記数法でselfを表した文字列を返します。つまり「
base進法」による整数の表記を返します。デフォルトは 10 進法です。baseが 11 以上のとき、"a"から"z"までのアルファベットが 10〜35 を表す「数字」として用いられます。p 10.to_s # => "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 以外の数値を指定した場合に発生します。
[SEE_ALSO] String#to_i
integer? -> true[permalink][rdoc][edit]-
常に
trueを返します。p 1.integer? # => true p 1.0.integer? # => false lcm(n) -> Integer[permalink][rdoc][edit]-
selfと整数nの最小公倍数を返します。- [EXCEPTION]
ArgumentError: -
nに整数以外のものを指定すると発生します。
p 2.lcm(2) # => 2 p 3.lcm(-7) # => 21 p ((1<<31)-1).lcm((1<<61)-1) # => 4951760154835678088235319297また、
selfやnが0だった場合は、0を返します。p 3.lcm(0) # => 0 p 0.lcm(-7) # => 0[SEE_ALSO] Integer#gcd, Integer#gcdlcm
- [EXCEPTION]
next -> Integer[permalink][rdoc][edit]succ -> Integer-
selfの次の整数を返します。メソッド名
succは successor(次ぐもの)より。p 1.next # => 2 p (-1).next # => 0 p 1.succ # => 2 p (-1).succ # => 0[SEE_ALSO] Integer#pred
nobits?(mask) -> boolRuby 2.5.0 から[permalink][rdoc][edit]-
self & maskのすべてのビットが0ならtrueを返します。self & mask == 0と等価です。- [PARAM]
mask: - ビットマスクを整数で指定します。
p 42.nobits?(42) # => false p 0b1010_1010.nobits?(0b1000_0010) # => false p 0b1010_1010.nobits?(0b1000_0001) # => false p 0b0100_0101.nobits?(0b1010_1010) # => true[SEE_ALSO] Integer#allbits?
[SEE_ALSO] Integer#anybits?
- [PARAM]
numerator -> Integer[permalink][rdoc][edit]-
常に
selfを返します。これは
selfを既約分数で表したときの分子(numerator)です。p 10.numerator # => 10 p -10.numerator # => -10[SEE_ALSO] Integer#denominator, Rational#numerator
odd? -> bool[permalink][rdoc][edit]-
selfが奇数ならtrueを返し、そうでないならfalseを返します。p 5.odd? # => true p 10.odd? # => false ord -> Integer[permalink][rdoc][edit]-
selfを返します。p 10.ord # => 10 # String#ord p ?a.ord # => 97[SEE_ALSO] String#ord
pred -> Integer[permalink][rdoc][edit]-
selfから1を引いた値を返します。メソッド名
predは predecessor(前のもの)より。p 1.pred # => 0 p (-1).pred # => -2[SEE_ALSO] Integer#next
rationalize -> RationalRuby 1.9.3 から[permalink][rdoc][edit]rationalize(eps) -> Rational-
selfを Rational に変換して返します。- [PARAM]
eps: - 許容する誤差
このメソッドは Rational#rationalize や Float#rationalize などに合わせて用意されていますが、
Integerにおいては引数epsは常に無視され、Integer#to_r と同じ値を返します。p 2.rationalize # => (2/1) p 2.rationalize(100) # => (2/1) p 2.rationalize(0.1) # => (2/1) - [PARAM]
remainder(other) -> NumericRuby 2.4.0 から[permalink][rdoc][edit]-
selfをotherで割った余り(剰余)rを返します。rの符号はselfと同じになります。- [PARAM]
other: -
selfに対する除数
p 5.remainder( 3) # => 2 p 5.remainder(-3) # => 2 p -5.remainder( 3) # => -2 p -5.remainder(-3) # => -2 p -1234567890987654321.remainder(13731) # => -6966 p -1234567890987654321.remainder(13731.24) # => -9906.22531493148[SEE_ALSO] Integer#divmod, Integer#modulo, Numeric#modulo
- [PARAM]
round(ndigits = 0, half: :up) -> Integer[permalink][rdoc][edit]-
selfともっとも近い整数を返します。- [PARAM]
ndigits: -
10進数での小数点以下の有効桁数を整数で指定します。負の整数を指定した場合、小数点位置から左に少なくとも
n個の0が並びます。 - [PARAM]
half: - ちょうど半分の値の丸め方を指定します。サポートされている値は以下の通りです。
:upornil: 0から遠い方に丸められます。:even: もっとも近い偶数に丸められます。:down: 0に近い方に丸められます。
p 1.round # => 1 p 1.round(2) # => 1 p 15.round(-1) # => 20 p (-15).round(-1) # => -20 p 25.round(-1, half: :up) # => 30 p 25.round(-1, half: :down) # => 20 p 25.round(-1, half: :even) # => 20 p 35.round(-1, half: :up) # => 40 p 35.round(-1, half: :down) # => 30 p 35.round(-1, half: :even) # => 40 p (-25).round(-1, half: :up) # => -30 p (-25).round(-1, half: :down) # => -20 p (-25).round(-1, half: :even) # => -20[SEE_ALSO] Numeric#round
- [PARAM]
size -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
整数の実装上のサイズをバイト数で返します。
p 1.size # => 8 p 0x1_0000_0000.size # => 8[SEE_ALSO] Integer#bit_length
times {|n| ... } -> self[permalink][rdoc][edit]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 -> FloatRuby 2.4.0 から[permalink][rdoc][edit]-
selfを浮動小数点数(Float)に変換して返します。selfが Float の範囲に収まらない場合、Float::INFINITY を返します。p 1.to_f # => 1.0 p (Float::MAX.to_i * 2).to_f # => Infinity p (-Float::MAX.to_i * 2).to_f # => -Infinity to_i -> self[permalink][rdoc][edit]to_int -> self-
selfを返します。p 10.to_i # => 10 to_r -> Rational[permalink][rdoc][edit]-
selfを Rational に変換して返します。p 1.to_r # => (1/1) p (1<<64).to_r # => (18446744073709551616/1) truncate(ndigits = 0) -> Integer[permalink][rdoc][edit]-
0からselfまでの整数で、selfにもっとも近い整数を返します。- [PARAM]
ndigits: -
10進数での小数点以下の有効桁数を整数で指定します。負の整数を指定した場合、小数点位置から左に少なくとも
n個の0が並びます。
p 1.truncate # => 1 p 1.truncate(2) # => 1 p 18.truncate(-1) # => 10 p (-18).truncate(-1) # => -10[SEE_ALSO] Numeric#truncate
- [PARAM]
upto(max) {|n| ... } -> Integer[permalink][rdoc][edit]upto(max) -> Enumerator-
selfからmaxまで1ずつ増やしながら繰り返します。self > maxであれば何もしません。- [PARAM]
max: - 数値
- [RETURN]
-
selfを返します。
p 5.upto(10) {|i| print i, " " } # => 5 6 7 8 9 10[SEE_ALSO] Integer#downto, Numeric#step, Integer#times
- [PARAM]
self | other -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
selfとotherのビット論理和を返します。Integerオブジェクトを左項とする二項演算子|はこのメソッドの呼び出しになります。- [PARAM]
other: - 数値
p 1 | 1 # => 1 p 2 | 3 # => 3 - [PARAM]
~ self -> IntegerRuby 2.4.0 から[permalink][rdoc][edit]-
selfをビット論理反転した整数を返します。Integerオブジェクトに対する単項演算子~はこのメソッドの呼び出しになります。p ~1 # => -2 p ~3 # => -4 p ~-4 # => 3
追加されるメソッド
each_prime(upper_bound) {|prime| ... } -> objectRuby 1.9.3 から[permalink][rdoc][edit] [added by prime]each_prime(upper_bound) -> Enumerator[added by prime]-
全ての素数を列挙し、それぞれの素数をブロックに渡して評価します。
- [PARAM]
upper_bound: - 任意の正の整数を指定します。列挙の上界です。 nil が与えられた場合は無限に列挙し続けます。
- [RETURN]
- ブロックの最後に評価された値を返します。ブロックが与えられなかった場合は、Enumerator と互換性のある外部イテレータを返します。
[SEE_ALSO] Prime#each
- [PARAM]
from_prime_division(pd) -> Integer[permalink][rdoc][edit] [added by prime]-
素因数分解された結果を元の数値に戻します。
- [PARAM]
pd: - 整数のペアの配列を指定します。含まれているペアの第一要素は素因数を、第二要素はその素因数の指数をあらわします。
[SEE_ALSO] Prime#int_from_prime_division
例require 'prime' p Prime.int_from_prime_division([[2,2], [3,1]]) # => 12 p Prime.int_from_prime_division([[2,2], [3,2]]) # => 36 - [PARAM]
prime? -> boolRuby 1.9.3 から[permalink][rdoc][edit] [added by prime]-
自身が素数である場合、真を返します。そうでない場合は偽を返します。
例require 'prime' p 1.prime? # => false p 2.prime? # => true[SEE_ALSO] Prime#prime?
prime_division(generator = Prime::Generator23.new) -> [[Integer, Integer]][permalink][rdoc][edit] [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' p 12.prime_division # => [[2,2], [3,1]] p 10.prime_division # => [[2,1], [5,1]] - [PARAM]
to_bn -> OpenSSL::BN[permalink][rdoc][edit] [added by openssl]-
Integer を同じ数を表す OpenSSL::BN のオブジェクトに変換します。
require 'openssl' pp 5.to_bn # => #<OpenSSL::BN 5> pp (-5).to_bn # => #<OpenSSL::BN -5>なお、実装は、以下のようになっています。
class Integer def to_bn OpenSSL::BN.new(self) end end[SEE_ALSO] OpenSSL::BN.new, OpenSSL::BN#to_i
to_d -> BigDecimalRuby 1.9.3 から[permalink][rdoc][edit] [added by bigdecimal/util]-
自身を BigDecimal に変換します。BigDecimal(self) と同じです。
- [RETURN]
- BigDecimal に変換したオブジェクト