Spec-Zone.ru › Elixir 1.14

Целое число

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

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

@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

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

Spec-Zone.ru

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