Ruby/Справочник/Bignum: различия между версиями

Содержимое удалено Содержимое добавлено
м орфография, викификатор
м <source> -> <syntaxhighlight> (phab:T237267)
 
Строка 12:
=== Bignum#% ===
----
<sourcesyntaxhighlight lang=ruby>big % other
big.modulo(other) #-> numeric</sourcesyntaxhighlight>
----
Возвращает остаток от деления чис#-> numeric
<sourcesyntaxhighlight lang=ruby>1234567890 % 2 #-> 0
1234567890 % 1.2 #-> 4.56881898980299e-008
1234567890 % -2 #-> 0</sourcesyntaxhighlight>
{{info|Полезно взглянуть в описание метода [[Ruby/Справочник/Numeric#Numeric#divmod|Numeric#divmod]] для получения более детальной информации}}
{{Идентичные методы|Bignum|%|modulo}}
Строка 25:
=== Bignum#& ===
----
<sourcesyntaxhighlight lang=ruby>big & numeric #-> integer</sourcesyntaxhighlight>
----
Побитовое <tt>И</tt>.
Строка 31:
=== Bignum#* ===
----
<sourcesyntaxhighlight lang=ruby>big * other #-> numeric</sourcesyntaxhighlight>
----
Умножает число ''big'' на число ''other'' и возвращает результат.
<sourcesyntaxhighlight lang=ruby>1234567890 * 2 #-> 2469135780
1234567890 * 1.2 #-> 1481481468.0
1234567890 * -2 #-> -2469135780</sourcesyntaxhighlight>
{{Похожие методы|Bignum|**|+|-|/|%}}
 
=== Bignum#** ===
----
<sourcesyntaxhighlight lang=ruby>big ** other #-> numeric
big.rpower(other) #-> numeric</sourcesyntaxhighlight>
----
Возводит число ''big'' в степень ''other'' (которая может быть целым, дробным или любым другим числом). Результат может быть класса [[Ruby/Справочник/Fixnum|Fixnum]], <tt>Bignum</tt> или [[Ruby/Справочник/Float|Float]].
<sourcesyntaxhighlight lang=ruby>123456789 ** 2 #-> 15241578750190521
123456789 ** 1.2 #-> 5126464716.09932
123456789 ** -2 #-> 6.5610001194102e-17</sourcesyntaxhighlight>
{{Похожие методы|Bignum|*|+|-|/|%|power!}}
{{Идентичные методы|Bignum|**|rpower}}
Строка 53:
=== Bignum#+ ===
----
<sourcesyntaxhighlight lang=ruby>big + other #-> numeric</sourcesyntaxhighlight>
----
Складывает число ''big'' с числом ''other'' и возвращает результат.
<sourcesyntaxhighlight lang=ruby>1234567890 + 2 #-> 1234567892
1234567890 + 1.2 #-> 1234567891.2
1234567890 + (-2) #-> 1234567888</sourcesyntaxhighlight>
{{Похожие методы|Bignum|**|*|-|/|%}}
 
=== Bignum#- ===
----
<sourcesyntaxhighlight lang=ruby>big - other #-> numeric</sourcesyntaxhighlight>
----
Вычитает из числа ''big'' число ''other'' и возвращает результат.
<sourcesyntaxhighlight lang=ruby>1234567890 - 2 #-> 1234567888
1234567890 - 1.2 #-> 1234567888.8
1234567890 - (-2) #-> 1234567892</sourcesyntaxhighlight>
{{Похожие методы|Bignum|**|+|*|/|%}}
 
=== Bignum#-@ ===
----
<sourcesyntaxhighlight lang=ruby>-big #-> other_big</sourcesyntaxhighlight>
----
Унарный минус (возвращает новый объект класса <tt>Bignum</tt>, значение которого равно 0-''big'')
Строка 79:
=== Bignum#/ ===
----
<sourcesyntaxhighlight lang=ruby>big / other #-> numeric
big.div(other) #-> numeric</sourcesyntaxhighlight>
----
Делит число ''big'' на число ''other'' и возвращает результат.
<sourcesyntaxhighlight lang=ruby>1234567890 / 2 #-> 617283945
1234567890 / 1.2 #-> 1028806575.0
1234567890 / (-2) #-> -617283945</sourcesyntaxhighlight>
{{Похожие методы|Bignum|**|*|-|+|%|quo|rdiv}}
{{Идентичные методы|Bignum|/|div}}
Строка 91:
=== Bignum#<< ===
----
<sourcesyntaxhighlight lang=ruby>big << numeric #-> integer</sourcesyntaxhighlight>
----
Побитовый сдвиг числа ''big'' влево на ''numeric'' позиций (вправо, если ''numeric'' меньше нуля).
Строка 98:
=== Bignum#<=> ===
----
<sourcesyntaxhighlight lang=ruby>big <=> numeric #-> -1, 0, +1</sourcesyntaxhighlight>
----
Сравнение — возвращает −1, 0 или +1, если значение числа ''big'' меньше, равно или больше значения числа ''numeric'', соответственно. Это базис для тестов в примеси [[Ruby/Справочник/Comparable|Comparable]].
Строка 104:
=== Bignum# ===
----
<sourcesyntaxhighlight lang=ruby>big == obj #-> true или false</sourcesyntaxhighlight>
----
Возвращает <tt>true</tt>, если число ''obj'' имеет такое же значение, что и число ''big''. В отличие от метода [[#Bignum#eql?|eql?]], приводит число ''obj'' к классу <tt>Bignum</tt>.
<sourcesyntaxhighlight lang=ruby>68719476736 == 68719476736.0 #-> true</sourcesyntaxhighlight>
 
=== Bignum#>> ===
----
<sourcesyntaxhighlight lang=ruby>big >> numeric #-> integer</sourcesyntaxhighlight>
----
Побитовый сдвиг числа ''big'' вправо на ''numeric'' позиций (влево, если ''numeric'' меньше нуля).
Строка 118:
=== Bignum#[] ===
----
<sourcesyntaxhighlight lang=ruby>big[n] #-> 0, 1</sourcesyntaxhighlight>
----
Побитовый доступ — возвращает ''n''ый бит (виртуальный) двоичного представления числа ''big'', где ''big''[0] — младший значащий бит.
<sourcesyntaxhighlight lang=ruby>a = 9**15
50.downto(0) do |n|
print a[n]
end</sourcesyntaxhighlight>
''результат'':
<tt>000101110110100000111000011110010100111100010111001</tt>
Строка 130:
=== Bignum#^ ===
----
<sourcesyntaxhighlight lang=ruby>big ^ numeric #-> integer</sourcesyntaxhighlight>
----
Побитовое <tt>ИСКЛЮЧАЮЩЕЕ ИЛИ</tt>
Строка 136:
=== Bignum#abs ===
----
<sourcesyntaxhighlight lang=ruby>big.abs #-> bignum</sourcesyntaxhighlight>
----
Возвращает [[w:Абсолютное значение|абсолютное значение]] числа ''big''.
<sourcesyntaxhighlight lang=ruby>-1234567890987654321.abs #-> 1234567890987654321</sourcesyntaxhighlight>
 
=== Bignum#coerce ===
----
<sourcesyntaxhighlight lang=ruby>big.coerce(other) #-> array</sourcesyntaxhighlight>
----
Возвращает массив, состоящий из чисел ''other'' и ''big'', которые преобразованы к классу <tt>Bignum</tt>.
<sourcesyntaxhighlight lang=ruby>
result = 1234567890.coerce( 1234 ) #-> [1234, 1234567890]
result[0] #-> 1234
result[0].class #-> Bignum</sourcesyntaxhighlight>
 
=== Bignum#div ===
----
<sourcesyntaxhighlight lang=ruby>big / other #-> numeric
big.div(other) #-> numeric</sourcesyntaxhighlight>
----
Делит число ''big'' на число ''other'' и возвращает результат.
<sourcesyntaxhighlight lang=ruby>1234567890 / 2 #-> 617283945
1234567890 / 1.2 #-> 1028806575.0
1234567890 / (-2) #-> -617283945</sourcesyntaxhighlight>
{{Похожие методы|Bignum|**|*|-|+|%|quo|rdiv}}
{{Идентичные методы|Bignum|/|div}}
Строка 165:
=== Bignum#divmod ===
----
<sourcesyntaxhighlight lang=ruby>big.divmod(numeric) #-> array</sourcesyntaxhighlight>
----
{{info|Полезно взглянуть в описание метода [[Ruby/Справочник/Numeric#Numeric#divmod|Numeric#divmod]] для получения более детальной информации}}
Строка 171:
=== Bignum#eql? ===
----
<sourcesyntaxhighlight lang=ruby>big.eql?(obj) #-> true или false</sourcesyntaxhighlight>
----
Возвращает <tt>true</tt>, если число ''obj'' имеет такое же значение, что и число ''big''. В отличие от метода [[#Bignum#==|==]], не занимается приведением типов.
<sourcesyntaxhighlight lang=ruby>68719476736.eql?(68719476736.0) #-> false</sourcesyntaxhighlight>
 
=== Bignum#hash ===
----
<sourcesyntaxhighlight lang=ruby>big.hash #-> fixnum</sourcesyntaxhighlight>
----
Вычисляет [[w:Контрольная сумма|контрольную сумму]] на основе значения числа ''big''.
Строка 184:
=== Bignum#modulo ===
----
<sourcesyntaxhighlight lang=ruby>big % other #-> numeric
big.modulo(other) #-> numeric</sourcesyntaxhighlight>
----
Возвращает остаток от деления числа ''big'' на число''other''.
Строка 194:
=== Bignum#power! ===
----
<sourcesyntaxhighlight lang=ruby>big.power!(other) #-> numeric</sourcesyntaxhighlight>
----
Производит возведение числа ''fix'' в степень ''other''.
<sourcesyntaxhighlight lang=ruby>1234567890.power!( 2 ) #-> 1524157875019052100
1234567890.power!( -2 ) #-> 6.5610001194102e-019</sourcesyntaxhighlight>
{{Похожие методы|Bignum|**|rpower}}
 
=== Bignum#quo ===
----
<sourcesyntaxhighlight lang=ruby>big.quo(other) #-> numeric
big.rdiv(other) #-> numeric</sourcesyntaxhighlight>
----
Делит число ''big'' на число ''other'' и в качестве результата возвращает [[Ruby/Справочник/Rational|рациональное число]].
<sourcesyntaxhighlight lang=ruby>1234567890.quo(7) #-> Rational(1234567890, 7)</sourcesyntaxhighlight>
{{Похожие методы|Bignum|/|div}}
{{Идентичные методы|Bignum|quo|rdiv}}
Строка 213:
=== Bignum#rdiv ===
----
<sourcesyntaxhighlight lang=ruby>big.quo(other) #-> numeric
big.rdiv(other) #-> numeric</sourcesyntaxhighlight>
----
Делит число ''big'' на число ''other'' и в качестве результата возвращает [[Ruby/Справочник/Rational|рациональное число]].
<sourcesyntaxhighlight lang=ruby>1234567890.rdiv(7) #-> Rational(1234567890, 7)</sourcesyntaxhighlight>
{{Похожие методы|Bignum|/|div}}
{{Идентичные методы|Bignum|quo|rdiv}}
Строка 223:
=== Bignum#remainder ===
----
<sourcesyntaxhighlight lang=ruby>big.remainder(numeric) #-> number</sourcesyntaxhighlight>
----
Возвращает остаток от деления числа ''big'' на число ''numeric''.
<sourcesyntaxhighlight lang=ruby>-1234567890987654321.remainder(13731) #-> -6966
-1234567890987654321.remainder(13731.24) #-> -9906.22531493148</sourcesyntaxhighlight>
{{Похожие методы|Bignum|quo|rdiv|%|modulo}}
{{Внимание|Результат работы данного метода и методов % и modulo (которые по идее делают тоже самое) существенно отличаются}}
Строка 233:
=== Bignum#rpower ===
----
<sourcesyntaxhighlight lang=ruby>big ** other #-> numeric
big.rpower(other) #-> numeric</sourcesyntaxhighlight>
----
Производит возведение числа ''big'' в степень ''other''. Возвращает [[Ruby/Справочник/Rational|рациональное число]], если результат рациональный (то есть, когда ''other'' < 0).
<sourcesyntaxhighlight lang=ruby>1234567890.power!( 2 ) #-> 1524157875019052100
1234567890.power!( -2 ) #-> Rational(1, 1524157875019052100)</sourcesyntaxhighlight>
{{Идентичные методы|Bignum|**|rpower}}
{{Похожие методы|Bignum|power!}}
Строка 244:
=== Bignum#size ===
----
<sourcesyntaxhighlight lang=ruby>big.size #-> integer</sourcesyntaxhighlight>
----
Возвращает количество байт машинного представления числа ''big''.
<sourcesyntaxhighlight lang=ruby>(256**10 - 1).size #-> 12
(256**20 - 1).size #-> 20
(256**40 - 1).size #-> 40</sourcesyntaxhighlight>
 
=== Bignum#to_f ===
----
<sourcesyntaxhighlight lang=ruby>big.to_f #-> float</sourcesyntaxhighlight>
----
Преобразует число ''big'' в число класса [[Ruby/Справочник/Float|Float]]. Если число ''big'' не может быть преобразовано к классу [[Ruby/Справочник/Float|Float]], то возвращает [[w:Бесконечность|бесконечность]].
Строка 260:
=== Bignum#to_s ===
----
<sourcesyntaxhighlight lang=ruby>big.to_s(base=10) #-> string</sourcesyntaxhighlight>
----
Возвращает строку, где число ''big'' имеет основание системы счисления равное ''base'' (между 2 и 36). По умолчанию ''base''=10 (то есть десятичная система счисления).
<sourcesyntaxhighlight lang=ruby>12345654321.to_s #-> "12345654321"
12345654321.to_s(2) #-> "1011011111110110111011110000110001"
12345654321.to_s(8) #-> "133766736061"
12345654321.to_s(16) #-> "2dfdbbc31"
78546939656932.to_s(36) #-> "rubyrules"</sourcesyntaxhighlight>
{{Похожие методы|Bignum|to_f}}
 
=== Bignum#| ===
----
<sourcesyntaxhighlight lang=ruby>big | numeric #-> integer</sourcesyntaxhighlight>
----
Побитовое <tt>ИЛИ</tt>.
Строка 278:
=== Bignum#≈ ===
----
<sourcesyntaxhighlight lang=ruby>~big #-> integer</sourcesyntaxhighlight>
----
Побитовое <tt>НЕ</tt>. Так как <tt>Bignum</tt> теоретически имеет бесконечную длину, то для вычисления результата берется число ''big'' на один бит длиннее старшего значащего бита (чтобы операция инверсии была обратимой).
<sourcesyntaxhighlight lang=ruby>
sprintf("%X", ~0x499602d2) #-> "-499602d3"
~~1234567890 #-> 1234567890</sourcesyntaxhighlight>
[[Категория:Ruby|Справочник/Bignum]]