Перейти к содержанию

Ruby/Справочник/Fixnum

Материал из Викиучебника — открытых книг для открытого мира

Класс Fixnum < Integer

[править]

Класс Fixnum - это целые числа (Integer), которые умещаются в одно машинное слово (минус 1 бит). Если в результате какой либо операции число класса Fixnum выходит за пределы этого диапазона, то значение автоматически преобразуется к классу Bignum. Объекты класса Fixnum имеют непосредственное значение. Это значит, что, когда они присваиваются или передаются в качестве параметра, происходит передача фактического объекта, не не ссылки. Присваивание не работает с ссылками на объекты Fixnum. Существует лишь один объект Fixnum для каждого целочисленного значения. Именно поэтому вы не можете добавить метод-одиночку для объекта Fixnum.


Примеси

Precision (prec, prec_f, prec_i)

Константы

XChar

Методы класса

induced_from

Методы объекта

[], %, &, **, *, +, -@, -, /, <<, <=>, <=, <, ==, >=, >>, >, ^, abs, divmod, div, id2name, modulo, power!, quo, rdiv, rpower, size, to_f, to_sym, to_s, zero?, ||, ~

Fixnum::induced_from

[править]

Fixnum.induced_from(obj)   #->  fixnum

Преобразует obj в объект класса Fixnum. Работает с числовыми параметрами. Еще работает с символами, но рекомендуется не использовать данную возможность.

Fixnum#%

[править]

fix % other        #-> numeric
fix.modulo(other)  #-> numeric

Возвращает остаток от деления числа fix на числоother.

5 % 2      #-> 1
5 % -2     #-> -1
5 % -2.2   #-> -1.6
Информация

Полезно взглянуть в описание метода Numeric#divmod для получения более детальной информации

Информация

Методы % и modulo — абсолютно идентичны, то есть являются именами одного и того же метода

Информация

Полезно посмотреть на методы **, +, -, / и *, которые имеют схожую функциональность

Fixnum#&

[править]

fix & other    #-> integer

Побитовое И.

Fixnum#*

[править]

fix * numeric  #->  numeric_result

Производит умножение: результат является одним из потомков класса Numeric и зависит от величины результата.

Информация

Полезно посмотреть на методы **, +, -, / и %, которые имеют схожую функциональность

Fixnum#**

[править]

fix ** other       #-> rational или numeric
fix.rpower(other)  #-> numeric или rational

Производит возведение числа fix в степень other. Возвращает рациональное число, если результат рациональный (то есть, когда other < 0).

2 ** 8    #-> 256
2 ** -8   #-> Rational(1,256)
Информация

Методы ** и rpower — абсолютно идентичны, то есть являются именами одного и того же метода

Информация

Полезно посмотреть на методы *, +, -, /, % и power!, которые имеют схожую функциональность

Fixnum#+

[править]

fix + numeric  #->  numeric_result

Производит сложение: результат является одним из потомков класса Numeric и зависит от величины результата.

Информация

Полезно посмотреть на методы **, *, -, / и %, которые имеют схожую функциональность

Fixnum#-

[править]

fix - numeric  #->  numeric_result

Производит вычитание: результат является одним из потомков класса Numeric и зависит от величины результата.

Информация

Полезно посмотреть на методы **, +, *, / и %, которые имеют схожую функциональность

Fixnum#-@

[править]

-fix  #->  integer

Отрицание fix (может вернуть значение класса Bignum).

Fixnum#/

[править]

fix / numeric     #->  numeric_result
fix.div(numeric)  #->  numeric_result

Производит целочисленное деление: результат является одним из потомков класса Numeric и зависит от величины результата.

Информация

Методы / и div — абсолютно идентичны, то есть являются именами одного и того же метода

Информация

Полезно посмотреть на методы **, +, -, * и %, которые имеют схожую функциональность

Fixnum#<

[править]

fix < other    #-> true или false

Возвращает true, если значение числа fix меньше, чем значение числа other.

Fixnum#<<

[править]

fix << count    #-> integer

Побитовый сдвиг числа fix влево на count позиций (вправо, если count меньше нуля).

Fixnum#<=

[править]

fix <= other    #-> true или false

Возвращает true, если значение числа fix меньше или равно значению числа other.

Fixnum#<=>

[править]

fix <=> numeric   #-> -1, 0, +1

Сравнение -- возвращает -1, 0 или +1, если значение числа fix меньше, равно или больше значения числа numeric, соответственно. Это базис для тестов в примеси Comparable.

Fixnum#==

[править]

fix == other    #-> true или false

Возвращает true, если значение числа fix равно значению числа other.

1 == 2      #-> false
1 == 1.0    #-> true

Fixnum#>

[править]

fix > other    #-> true или false

Возвращает true, если значение числа fix больше, чем значение числа other.

Fixnum#>=

[править]

fix >= other    #-> true или false

Возвращает true, если значение числа fix больше или равно, чем значение числа other.

Fixnum#>>

[править]

fix >> count    #-> integer

Побитовый сдвиг числа fix вправо на count позиций (влево, если count меньше нуля).

Fixnum#[]

[править]

fix[n]    #-> 0, 1

Побитовый доступ -- возвращает nый бит двоичного представления числа fix, где fix[0] -- младший significant бит.

a = 0b11001100101010
30.downto(0) do |n| print a[n] end

результат:

 0000000000000000011001100101010

Fixnum#^

[править]

fix ^ other    #-> integer

Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ.

Fixnum#abs

[править]

fix.abs   #-> fixnum

Возвращает абсолютное значение числа fix.

-12345.abs   #-> 12345
12345.abs    #-> 12345

Fixnum#div

[править]

fix / numeric     #->  numeric_result
fix.div(numeric)  #->  numeric_result

Производит целочисленное деление: результат является одним из потомков класса Numeric и зависит от величины результата.

Информация

Методы / и div — абсолютно идентичны, то есть являются именами одного и того же метода

Fixnum#divmod

[править]

fix.divmod(numeric)   #-> array

Информация

Полезно взглянуть в описание метода Numeric#divmod для получения более детальной информации

Fixnum#id2name

[править]

fix.id2name    #-> string или nil

Возвращает имя объекта с id равным fix. Возвращает nil, если в символьной таблице не найдено ни одного символа, соответствующего значению fix.

symbol = :@inst_var    #-> :@inst_var
id     = symbol.to_i   #-> 9818
id.id2name             #-> "@inst_var"
Информация
  • Для более полного представления о работе данного метода советуем взглянуть на описания методов to_sym, String#intern и описание класса Symbol
  • Метод id2name никак не взаимодействует с методом Object#id

Fixnum#modulo

[править]

fix % other        #-> Numeric
fix.modulo(other)  #-> Numeric

Возвращает остаток от деления числа fix на числоother.

Информация

Полезно взглянуть в описание метода Numeric#divmod для получения более детальной информации

Информация

Методы % и modulo — абсолютно идентичны, то есть являются именами одного и того же метода

Fixnum#power!

[править]

fix.power!( other )  #-> numeric

Производит возведение числа fix в степень other.

2.power!( 8 )    #-> 256
2.power( -8 )   #-> 0.00390625
Информация

Полезно посмотреть на методы ** и rpower, которые имеют схожую функциональность

Fixnum#quo

[править]

fix.quo(numeric)   #-> float
fix.rdiv(numeric)  #-> float

Возвращает дробный результат деления числа fix на число numeric.

654321.quo(13731)      #-> 47.6528293642124
654321.quo(13731.24)   #-> 47.6519964693647
Информация

Методы quo и rdiv — абсолютно идентичны, то есть являются именами одного и того же метода

Fixnum#rdiv

[править]

fix.quo(numeric)   #-> float
fix.rdiv(numeric)  #-> float

Возвращает дробный результат деления числа fix на число numeric.

654321.rdiv(13731)      #-> 47.6528293642124
654321.rdiv(13731.24)   #-> 47.6519964693647
Информация

Методы quo и rdiv — абсолютно идентичны, то есть являются именами одного и того же метода

Fixnum#rpower

[править]

fix ** other       #-> rational или numeric
fix.rpower(other)  #-> rational или numeric

Производит возведение числа fix в степень other. Возвращает рациональное число, если результат рациональный (то есть, когда other < 0).

2.rpower( 8 )    #-> 256
2.rpower( -8 )   #-> Rational(1,256)
Информация

Методы ** и rpower — абсолютно идентичны, то есть являются именами одного и того же метода

Информация

Полезно посмотреть на метод power!, который имеет схожую функциональность

Fixnum#size

[править]

fix.size   #-> fixnum

Возвращает количество байт машинного представления числа fix.

1.size            #-> 4
-1.size           #-> 4
2147483647.size   #-> 4

Fixnum#to_f

[править]

fix.to_f   #-> float

Преобразует значение числа fix к классу Float.

Информация

Полезно посмотреть на методы to_s и to_sym, которые имеют схожую функциональность

Fixnum#to_s

[править]

fix.to_s( base=10 )   #-> string

Возвращает строку, где число fix имеет основание системы счисления равное base (между 2 и 36). По умолчанию base=10 (то есть десятичная система счисления).

12345.to_s       #-> "12345"
12345.to_s(2)    #-> "11000000111001"
12345.to_s(8)    #-> "30071"
12345.to_s(10)   #-> "12345"
12345.to_s(16)   #-> "3039"
12345.to_s(36)   #-> "9ix"
Информация

Полезно посмотреть на методы to_f и to_sym, которые имеют схожую функциональность

Fixnum#to_sym

[править]

fix.to_sym   #-> symbol

Возвращает символ, которому соответствует значение fix.

fred = :fred.to_i
fred.id2name   #-> "fred"
fred.to_sym    #-> :fred
Информация

Полезно посмотреть на методы to_s, to_f и id2name, которые имеют схожую функциональность


Fixnum#zero?

[править]

fix.zero?   #-> true или false

Возвращает true, если значение fix равно нулю.

Fixnum#|

[править]

fix | other    #-> integer

Побитовое ИЛИ.

Fixnum#~

[править]

~fix    #-> integer

Побитовое НЕ.