Spec-Zone.ru › Elixir 1.13

Целое

Функции для работы с целыми числами.

Некоторые функции, работающие с целыми числами, находятся в Kernel:

  • abs/1
  • div/2
  • max/2
  • min/2
  • rem/2

Краткое описание

Защиты

is_even(целое число)

Определяет, является ли данное integer чётным.

is_odd(целое число)

Определяет, является ли данное integer нечётным.

Функции

digits(целое число, основание \\ 10)

Возвращает упорядоченные цифры для данного integer.

extended_gcd(a, b)

Возвращает расширенный наибольший общий делитель двух данных целых чисел.

floor_div(делимое, делитель)

Выполняет целочисленное деление с округлением.

gcd(целое число1, целое число2)

Возвращает наибольший общий делитель двух данных целых чисел.

mod(делимое, делитель)

Вычисляет остаток от целочисленного деления.

parse(бинарное, основание \\ 10)

Парсит текстовое представление целого числа.

pow(основание, показатель)

Вычисляет base в степени exponent.

to_charlist(целое число, основание \\ 10)

Возвращает список символов, соответствующий текстовому представлению integer в заданном base.

to_string(целое число, основание \\ 10)

Возвращает бинарное, соответствующее текстовому представлению integer в заданном base.

undigits(цифры, основание \\ 10)

Возвращает целое число, представленное упорядоченными digits.

Защиты

is_even(целое число)Source

Определяет, является ли данное integer чётным.

Возвращает true, если данное integer является чётным числом, в противном случае возвращает false.

Допускается в защитных выражениях.

Примеры

iex> Integer.is_even(10)
true

iex> Integer.is_even(5)
false

iex> Integer.is_even(-10)
true

iex> Integer.is_even(0)
true

is_odd(целое число)Source

Определяет, является ли данное integer нечётным.

Возвращает true, если данное integer является нечётным числом, в противном случае возвращает false.

Допускается в защитных выражениях.

Примеры

iex> Integer.is_odd(5)
true

iex> Integer.is_odd(6)
false

iex> Integer.is_odd(-5)
true

iex> Integer.is_odd(0)
false

Функции

digits(целое число, основа \\ 10)Source

@spec digits(integer(), pos_integer()) :: [integer(), ...]

Возвращает упорядоченные цифры для данного integer.

Можно указать необязательное значение base, представляющее основание для возвращаемых цифр. Оно должно быть целым числом >= 2.

Примеры

iex> Integer.digits(123)
[1, 2, 3]

iex> Integer.digits(170, 2)
[1, 0, 1, 0, 1, 0, 1, 0]

iex> Integer.digits(-170, 2)
[-1, 0, -1, 0, -1, 0, -1, 0]

extended_gcd(a, b)Source

@spec extended_gcd(integer(), integer()) :: {non_neg_integer(), integer(), integer()}

Возвращает расширенное наибольшее общее делитель двух заданных целых чисел.

Эта функция использует расширенный алгоритм Евклида, чтобы вернуть тройку значений с gcd и коэффициентами m и n тождества Безу, так что:

gcd(a, b) = m*a + n*b

По соглашению, extended_gcd(0, 0) возвращает {0, 0, 0}.

Примеры

iex> Integer.extended_gcd(240, 46)
{2, -9, 47}
iex> Integer.extended_gcd(46, 240)
{2, 47, -9}
iex> Integer.extended_gcd(-46, 240)
{2, -47, -9}
iex> Integer.extended_gcd(-46, -240)
{2, -47, 9}

iex> Integer.extended_gcd(14, 21)
{7, -1, 1}

iex> Integer.extended_gcd(10, 0)
{10, 1, 0}
iex> Integer.extended_gcd(0, 10)
{10, 0, 1}
iex> Integer.extended_gcd(0, 0)
{0, 0, 0}

floor_div(делимое, делитель)Source

@spec floor_div(integer(), neg_integer() | pos_integer()) :: integer()

Выполняет целочисленное деление по принципу округления к меньшему.

Вызывает исключение ArithmeticError, если один из аргументов не является целым числом или когда divisor является 0.

Эта функция выполняет целочисленное деление по принципу округления к меньшему, что означает, что результат всегда будет округляться к отрицательной бесконечности.

Если вам нужно выполнить усеченное целочисленное деление (округление к нулю), используйте Kernel.div/2 вместо этого.

Примеры

iex> Integer.floor_div(5, 2)
2
iex> Integer.floor_div(6, -4)
-2
iex> Integer.floor_div(-99, 2)
-50

gcd(целое число1, целое число2)Source

@spec gcd(integer(), integer()) :: non_neg_integer()

Возвращает наибольший общий делитель двух заданных целых чисел.

Наибольший общий делитель (НОД) integer1 и integer2 — это наибольшее положительное целое число, которое делит integer1 и integer2 без остатка.

По соглашению, gcd(0, 0) возвращает 0.

Примеры

iex> Integer.gcd(2, 3)
1

iex> Integer.gcd(8, 12)
4

iex> Integer.gcd(8, -12)
4

iex> Integer.gcd(10, 0)
10

iex> Integer.gcd(7, 7)
7

iex> Integer.gcd(0, 0)
0

mod(делимое, делитель)Source

@spec mod(integer(), neg_integer() | pos_integer()) :: integer()

Вычисляет остаток от целочисленного деления по модулю.

Эта функция выполняет целочисленное деление по принципу округления к меньшему, что означает, что результат всегда будет иметь знак divisor.

Вызывает исключение ArithmeticError, если один из аргументов не является целым числом или когда divisor равно 0.

Примеры

iex> Integer.mod(5, 2)
1
iex> Integer.mod(6, -4)
-2

parse(бинарное представление, основа \\ 10)Source

@spec parse(binary(), 2..36) :: {integer(), remainder_of_binary :: binary()} | :error

Парсит текстовое представление целого числа.

Можно указать необязательное значение base, соответствующее целому числу. Если base не указано, будет использовано значение 10.

Если успешно, возвращает кортеж в формате {integer, remainder_of_binary}. В противном случае :error.

Вызывает ошибку, если base меньше 2 или больше 36.

Если вам нужно преобразовать строковое целое число непосредственно в целое число, используйте String.to_integer/1 или String.to_integer/2 вместо этого.

Примеры

iex> Integer.parse("34")
{34, ""}

iex> Integer.parse("34.5")
{34, ".5"}

iex> Integer.parse("three")
:error

iex> Integer.parse("34", 10)
{34, ""}

iex> Integer.parse("f4", 16)
{244, ""}

iex> Integer.parse("Awww++", 36)
{509216, "++"}

iex> Integer.parse("fab", 10)
:error

iex> Integer.parse("a2", 38)
** (ArgumentError) invalid base 38

pow(основание, показатель)Source

@spec pow(integer(), non_neg_integer()) :: integer()

Вычисляет base в степени exponent.

И base, и exponent должны быть целыми числами. Показатель степени должен быть нулевым или положительным.

См. Float.pow/2 для возведения в степень с отрицательными показателями и для чисел с плавающей точкой.

Примеры

iex> Integer.pow(2, 0)
1
iex> Integer.pow(2, 1)
2
iex> Integer.pow(2, 10)
1024
iex> Integer.pow(2, 11)
2048
iex> Integer.pow(2, 64)
0x10000000000000000

iex> Integer.pow(3, 4)
81
iex> Integer.pow(4, 3)
64

iex> Integer.pow(-2, 3)
-8
iex> Integer.pow(-2, 4)
16

iex> Integer.pow(2, -2)
** (ArithmeticError) bad argument in arithmetic expression

to_charlist(целое число, основа \\ 10)Source

@spec to_charlist(integer(), 2..36) :: charlist()

Возвращает список символов, соответствующий текстовому представлению integer в данной base.

base может быть целым числом от 2 до 36. Если base не указано, используется значение 10.

Встроено компилятором.

Примеры

iex> Integer.to_charlist(123)
'123'

iex> Integer.to_charlist(+456)
'456'

iex> Integer.to_charlist(-789)
'-789'

iex> Integer.to_charlist(0123)
'123'

iex> Integer.to_charlist(100, 16)
'64'

iex> Integer.to_charlist(-100, 16)
'-64'

iex> Integer.to_charlist(882_681_651, 36)
'ELIXIR'

to_string(целое число, основа \\ 10)Source

@spec to_string(integer(), 2..36) :: String.t()

Возвращает двоичное представление, соответствующее текстовому представлению integer в заданной base.

base может быть целым числом от 2 до 36. Если base не указано, используется значение 10.

Встроено компилятором.

Примеры

iex> Integer.to_string(123)
"123"

iex> Integer.to_string(+456)
"456"

iex> Integer.to_string(-789)
"-789"

iex> Integer.to_string(0123)
"123"

iex> Integer.to_string(100, 16)
"64"

iex> Integer.to_string(-100, 16)
"-64"

iex> Integer.to_string(882_681_651, 36)
"ELIXIR"

undigits(цифры, основа \\ 10)Source

@spec undigits([integer()], pos_integer()) :: integer()

Возвращает целое число, представленное упорядоченными digits.

Необязательное значение base может быть указано, представляющее основание для digits. Основание должно быть целым числом, большим или равным 2.

Примеры

iex> Integer.undigits([1, 2, 3])
123

iex> Integer.undigits([1, 4], 16)
20

iex> Integer.undigits([])
0

© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.13.4/Integer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API