Spec-Zone.ru › Elixir 1.18

Исходный код Целое число

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

Некоторые функции, работающие с целыми числами, находятся в 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(целое число)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)Источник

@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)Источник

@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(делимое, делитель)Источник

@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)Источник

@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(делимое, делитель)Источник

@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)Источник

@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(основание, показатель)Источник

@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)Источник

@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)Источник

@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)Источник

@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.36.1) для языка программирования Elixir

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

Spec-Zone.ru

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