Spec-Zone.ru › Elixir 1.17

Источник Целое число

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

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

  • Kernel.abs/1
  • Kernel.div/2
  • Kernel.max/2
  • Kernel.min/2
  • Kernel.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(целое число)Источник

Определяет, является ли 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(целое число)Источник

Определяет, является ли 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)
~c"123"

iex> Integer.to_charlist(+456)
~c"456"

iex> Integer.to_charlist(-789)
~c"-789"

iex> Integer.to_charlist(0123)
~c"123"

iex> Integer.to_charlist(100, 16)
~c"64"

iex> Integer.to_charlist(-100, 16)
~c"-64"

iex> Integer.to_charlist(882_681_651, 36)
~c"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

Скачать версию ePub

Создано с помощью ExDoc (v0.34.1) для языка программирования Elixir

© 2012-2024 The Elixir Team
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.17.2/Integer.html

Spec-Zone.ru

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