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

Содержимое удалено Содержимое добавлено
м орфография, викификатор
Строка 1:
== Класс Bignum < Integer ==
Классу <tt>Bignum</tt> принадлежат целые числа, которые не умещаются в диапазон класса [[Ruby/Справочник/Fixnum|Fixnum]].
Объекты класса <tt>Bignum</tt> создаются автоматически, когда результат вычислений превышает (по модулю) предельное значение класса [[Ruby/Справочник/Fixnum|Fixnum]]. Когда, в результате вычислений, объект класса <tt>Bignum</tt> уменьшается настолько, что его значение можно хранить в объекте класса [[Ruby/Справочник/Fixnum|Fixnum]], то он автоматически преобразуется в [[Ruby/Справочник/Fixnum|Fixnum]].
Строка 8:
'''Методы объекта'''
 
[[#Bignum#%5B%5D|[]]], [[#Bignum#%|%]], [[#Bignum#&amp;|&amp;]], [[#Bignum#**|**]], [[#Bignum#*|*]], [[#Bignum#+|+]], [[#Bignum#-@|-@]], [[#Bignum#-|-]], [[#Bignum#/|/]], [[#Bignum#&lt;&lt;|&lt;&lt;]], [[#Bignum#&lt;=&gt;|&lt;=&gt;]], [[#Bignum#==|==]], [[#Bignum#&gt;&gt;|&gt;&gt;]], [[#Bignum#^|^]], [[#Bignum#abs|abs]], [[#Bignum#coerce|coerce]], [[#Bignum#divmod|divmod]], [[#Bignum#div|div]], [[#Bignum#eql?|eql?]], [[#Bignum#hash|hash]], [[#Bignum#modulo|modulo]], [[#Bignum#power!|power!]], [[#Bignum#quo|quo]], [[#Bignum#rdiv|rdiv]], [[#Bignum#remainder|remainder]], [[#Bignum#rpower|rpower]], [[#Bignum#size|size]], [[#Bignum#to_fto f|to_f]], [[#Bignum#to_sto s|to_s]], [[#Bignum#|||]], [[#Bignum#~|~]]
 
=== Bignum#% ===
----
<source lang=ruby>big % other
Строка 21 ⟶ 22 :
{{Идентичные методы|Bignum|%|modulo}}
{{Похожие методы|Bignum|**|+|-|/|*}}
 
=== Bignum#& ===
----
<source lang=ruby>big & numeric #-> integer</source>
----
Побитовое <tt>И</tt>.
 
=== Bignum#* ===
----
<source lang=ruby>big * other #-> numeric</source>
Строка 35 ⟶ 38 :
1234567890 * -2 #-> -2469135780</source>
{{Похожие методы|Bignum|**|+|-|/|%}}
 
=== Bignum#** ===
----
<source lang=ruby>big ** other #-> numeric
Строка 46 ⟶ 50 :
{{Похожие методы|Bignum|*|+|-|/|%|power!}}
{{Идентичные методы|Bignum|**|rpower}}
 
=== Bignum#+ ===
----
<source lang=ruby>big + other #-> numeric</source>
Строка 55 ⟶ 60 :
1234567890 + (-2) #-> 1234567888</source>
{{Похожие методы|Bignum|**|*|-|/|%}}
 
=== Bignum#- ===
----
<source lang=ruby>big - other #-> numeric</source>
Строка 64 ⟶ 70 :
1234567890 - (-2) #-> 1234567892</source>
{{Похожие методы|Bignum|**|+|*|/|%}}
 
=== Bignum#-@ ===
----
<source lang=ruby>-big #-> other_big</source>
----
Унарный минус (возвращает новый объект класса <tt>Bignum</tt>, значение которого равно 0-''big'')
 
=== Bignum#/ ===
----
<source lang=ruby>big / other #-> numeric
Строка 80 ⟶ 88 :
{{Похожие методы|Bignum|**|*|-|+|%|quo|rdiv}}
{{Идентичные методы|Bignum|/|div}}
 
=== Bignum#<< ===
----
<source lang=ruby>big << numeric #-> integer</source>
Строка 86 ⟶ 95 :
Побитовый сдвиг числа ''big'' влево на ''numeric'' позиций (вправо, если ''numeric'' меньше нуля).
{{Похожие методы|Bignum|>>}}
 
=== Bignum#<=> ===
----
<source lang=ruby>big <=> numeric #-> -1, 0, +1</source>
----
Сравнение -- — возвращает -1−1, 0 или +1, если значение числа ''big'' меньше, равно или больше значения числа ''numeric'', соотвественносоответственно. Это базис для тестов в примеси [[Ruby/Справочник/Comparable|Comparable]].
 
=== Bignum#== ===
----
<source lang=ruby>big == obj #-> true или false</source>
Строка 97 ⟶ 108 :
Возвращает <tt>true</tt>, если число ''obj'' имеет такое же значение, что и число ''big''. В отличие от метода [[#Bignum#eql?|eql?]], приводит число ''obj'' к классу <tt>Bignum</tt>.
<source lang=ruby>68719476736 == 68719476736.0 #-> true</source>
 
=== Bignum#>> ===
----
<source lang=ruby>big >> numeric #-> integer</source>
Строка 103 ⟶ 115 :
Побитовый сдвиг числа ''big'' вправо на ''numeric'' позиций (влево, если ''numeric'' меньше нуля).
{{Похожие методы|Bignum|<<}}
 
=== Bignum#[] ===
----
<source lang=ruby>big[n] #-> 0, 1</source>
----
Побитовый доступ -- — возвращает ''n''ый бит (виртуальный) двоичного представления числа ''big'', где ''big''[0] -- — младший значащий бит.
<source lang=ruby>a = 9**15
50.downto(0) do |n|
Строка 114 ⟶ 127 :
''результат'':
<tt>000101110110100000111000011110010100111100010111001</tt>
 
=== Bignum#^ ===
----
<source lang=ruby>big ^ numeric #-> integer</source>
----
Побитовое <tt>ИСКЛЮЧАЮЩЕЕ ИЛИ</tt>
 
=== Bignum#abs ===
----
<source lang=ruby>big.abs #-> bignum</source>
Строка 125 ⟶ 140 :
Возвращает [[w:Абсолютное значение|абсолютное значение]] числа ''big''.
<source lang=ruby>-1234567890987654321.abs #-> 1234567890987654321</source>
 
=== Bignum#coerce ===
----
<source lang=ruby>big.coerce(other) #-> array</source>
Строка 134 ⟶ 150 :
result[0] #-> 1234
result[0].class #-> Bignum</source>
 
=== Bignum#div ===
----
<source lang=ruby>big / other #-> numeric
Строка 145 ⟶ 162 :
{{Похожие методы|Bignum|**|*|-|+|%|quo|rdiv}}
{{Идентичные методы|Bignum|/|div}}
 
=== Bignum#divmod ===
----
<source lang=ruby>big.divmod(numeric) #-> array</source>
----
{{info|Полезно взглянуть в описание метода [[Ruby/Справочник/Numeric#Numeric#divmod|Numeric#divmod]] для получения более детальной информации}}
 
=== Bignum#eql? ===
----
<source lang=ruby>big.eql?(obj) #-> true или false</source>
Строка 156 ⟶ 175 :
Возвращает <tt>true</tt>, если число ''obj'' имеет такое же значение, что и число ''big''. В отличие от метода [[#Bignum#==|==]], не занимается приведением типов.
<source lang=ruby>68719476736.eql?(68719476736.0) #-> false</source>
 
=== Bignum#hash ===
----
<source lang=ruby>big.hash #-> fixnum</source>
----
Вычисляет [[w:Контрольная сумма|контрольную сумму]] на основе значения числа ''big''.
 
=== Bignum#modulo ===
----
<source lang=ruby>big % other #-> numeric
Строка 170 ⟶ 191 :
{{Идентичные методы|Bignum|%|modulo}}
{{Похожие методы|Bignum|**|+|-|/|*}}
 
=== Bignum#power! ===
----
<source lang=ruby>big.power!(other) #-> numeric</source>
Строка 178 ⟶ 200 :
1234567890.power!( -2 ) #-> 6.5610001194102e-019</source>
{{Похожие методы|Bignum|**|rpower}}
 
=== Bignum#quo ===
----
<source lang=ruby>big.quo(other) #-> numeric
Строка 187 ⟶ 210 :
{{Похожие методы|Bignum|/|div}}
{{Идентичные методы|Bignum|quo|rdiv}}
 
=== Bignum#rdiv ===
----
<source lang=ruby>big.quo(other) #-> numeric
Строка 196 ⟶ 220 :
{{Похожие методы|Bignum|/|div}}
{{Идентичные методы|Bignum|quo|rdiv}}
 
=== Bignum#remainder ===
----
<source lang=ruby>big.remainder(numeric) #-> number</source>
Строка 206 ⟶ 231 :
{{Внимание|Результат работы данного метода и методов % и modulo (которые по идее делают тоже самое) существенно отличаются}}
 
=== Bignum#rpower ===
----
<source lang=ruby>big ** other #-> numeric
Строка 216 ⟶ 241 :
{{Идентичные методы|Bignum|**|rpower}}
{{Похожие методы|Bignum|power!}}
 
=== Bignum#size ===
----
<source lang=ruby>big.size #-> integer</source>
Строка 224 ⟶ 250 :
(256**20 - 1).size #-> 20
(256**40 - 1).size #-> 40</source>
 
=== Bignum#to_f ===
----
<source lang=ruby>big.to_f #-> float</source>
Строка 230 ⟶ 257 :
Преобразует число ''big'' в число класса [[Ruby/Справочник/Float|Float]]. Если число ''big'' не может быть преобразовано к классу [[Ruby/Справочник/Float|Float]], то возвращает [[w:Бесконечность|бесконечность]].
{{Похожие методы|Bignum|to_s}}
 
=== Bignum#to_s ===
----
<source lang=ruby>big.to_s(base=10) #-> string</source>
Строка 241 ⟶ 269 :
78546939656932.to_s(36) #-> "rubyrules"</source>
{{Похожие методы|Bignum|to_f}}
 
=== Bignum#| ===
----
<source lang=ruby>big | numeric #-> integer</source>
----
Побитовое <tt>ИЛИ</tt>.
 
=== Bignum#~===
----
<source lang=ruby>~big #-> integer</source>