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

Содержимое удалено Содержимое добавлено
Строка 67:
В отличие от большинства элементарных типов данных, числа обладают своей иерархией. Все числа в Ruby наследованы от класса <code>Numeric</code> (числовой). Поэтому, если хотите добавить новый метод ко всем числам, то нужно расширять именно этот класс. Далее идёт деление чисел: <code>Integer</code> (целое), <code>Float</code> (число с плавающей запятой) и <code>Complex</code> (комлексное). При желании можно добавить и <code>Rational</code> (рациональное), но на данном семейном портрете оно отсутствует.
 
От класса <code>Integer</code> наследуются ''два'' класса: <code>Fixnum</code> (фиксированное целое) и <code>Bignum</code> (большое целое). К первому относятся все числа, по модулю меньшие <math>2^{6330}</math>, а ко второму — все остальные.
 
* <code>Fixnum</code> автоматически становится <code>Bignum</code> по превышении <math>2^{6330}</math> по модулю. И наоборот, падая ниже, <code>Bignum</code> преобразуется в <code>Fixnum</code>.
* Из отрицательного числа можно получить корень, когда подключена библиотека <code>mathn</code>. Он будет типа <code>Complex</code>.
* Как только число типа <code>Complex</code> лишается мнимой части, то оно становится либо <code>Integer</code> (<code>Fixnum</code> или <code>Bignum</code>), либо <code>Float</code> (в зависимости от типа действительной части). Если подключена библиотка <code>mathn</code>, может получиться число типа <code>Rational</code>.