Ruby/Подробнее о числах: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 5:
=== Целые числа ===
 
Целые числа в Ruby не ограничены по величине, то есть могут хранить на сколько угодно большие значения. Для обеспечения такого волшебного свойства было создано два класса. Один из них хранит числа меньшие <math>2^{3130}</math> (по модулю), а второй — всё, что больше. По сути, для больших чисел создаётся массив из маленьких, а раз массив не имеет ограничений по длине, то и число получается неограниченным по значению.
 
{{info|
А вот и неправда. Если, например, написать
 
<source lang="ruby">
Строка 14:
** 54308428790203478762340052723346983453487023489987231275412390872348475</source>
 
то он начинает ругаться и выдаёт <code>Infinity</code>. Можно подумать, что это интерпретатор не может обработать такое большое число. Конечно же это не так, что становится ясно после прочтения выдаваемого интерпретатором предупреждения. Там написано, что показатель степени (то есть второе число) не может быть типа Bignum (чтобы не пришлось слишком много считать).}}
то он начинает ругаться и выдаёт <code>Infinity</code>.}}
 
{{info|
Строка 33:
}}
 
Как только число типа <code>Fixnum</code> становится больше <math>2^{3130}</math> (по модулю), то оно преобразуется к классу <code>Bignum</code>. Если число типа <code>Bignum</code> становится меньше <math>2^{3130}</math>, то оно преобразуется к типу <code>Fixnum</code>.
 
При записи целых чисел сначала указывается знак числа (знак <code>+</code> обычно не пишется). Далее идёт основание [[w:Система счисления|системы счисления]], в которой задаётся число (если оно отлично от [[w:Десятичная система счисления|десятичной]]): <code>0</code> — для [[w:Восьмеричная система счисления|восьмеричной]], <code>0x</code> — для [[w:Шестнадцатеричная система счисления|шестнадцатеричной]], <code>0b</code> — для [[w:Двоичная система счисления|двоичной]]. Затем идёт последовательность цифр, выражающих число в данной системе счисления. При записи чисел можно использовать символ подчёркивания, который игнорируется при обработке. Чтобы закрепить вышесказанное, посмотрим примеры целых чисел: