查看源代码 Integer (Elixir v1.16.2)

用于处理整数的函数。

一些处理整数的函数位于 Kernel

摘要

守卫

确定一个 integer 是否为偶数。

确定 integer 是否为奇数。

函数

返回给定 integer 的有序数字。

返回两个给定整数的扩展最大公约数。

执行向下取整的整数除法。

返回两个给定整数的最大公约数。

计算整数除法的模余数。

解析整数的文本表示。

计算 base 乘以 exponent 的幂。

返回一个字符列表,该列表对应于给定 baseinteger 的文本表示。

返回一个二进制数,该二进制数对应于给定 baseinteger 的文本表示。

返回由有序 digits 表示的整数。

守卫

链接到此宏

is_even(integer)

查看源代码 (宏)

确定一个 integer 是否为偶数。

如果给定的 integer 是偶数,则返回 true,否则返回 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

确定 integer 是否为奇数。

如果给定的 integer 是奇数,则返回 true,否则返回 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(integer, base \\ 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)

查看源代码 (自 1.12.0 版本起)
@spec extended_gcd(integer(), integer()) :: {non_neg_integer(), integer(), integer()}

返回两个给定整数的扩展最大公约数。

此函数使用扩展欧几里得算法返回一个三元组,其中包含 gcd 和贝祖恒等式的系数 mn,使得

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(dividend, divisor)

查看源代码 (自 1.4.0 版本起)
@spec floor_div(integer(), neg_integer() | pos_integer()) :: integer()

执行向下取整的整数除法。

如果其中一个参数不是整数,或者 divisor0,则引发 ArithmeticError 异常。

此函数执行向下取整的整数除法,这意味着结果将始终向负无穷大方向取整。

如果要执行截断的整数除法(向零方向取整),请改用 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(integer1, integer2)

查看源代码 (自 1.5.0 版本起)
@spec gcd(integer(), integer()) :: non_neg_integer()

返回两个给定整数的最大公约数。

integer1integer2 的最大公约数 (GCD) 是能同时整除 integer1integer2 的最大正整数。

按照惯例,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(dividend, divisor)

查看源代码 (自 1.4.0 版本起)
@spec mod(integer(), neg_integer() | pos_integer()) :: integer()

计算整数除法的模余数。

此函数执行 向下取整除法,这意味着结果始终具有 divisor 的符号。

如果其中一个参数不是整数,或者 divisor0,则引发 ArithmeticError 异常。

示例

iex> Integer.mod(5, 2)
1
iex> Integer.mod(6, -4)
-2
链接到此函数

parse(binary, base \\ 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/1String.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(base, exponent)

查看源代码 (自 1.12.0 版本起)
@spec pow(integer(), non_neg_integer()) :: integer()

计算 base 乘以 exponent 的幂。

baseexponent 都必须是整数。指数必须为零或正数。

有关负指数以及浮点数的指数运算,请参阅 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(integer, base \\ 10)

查看源代码
@spec to_charlist(integer(), 2..36) :: charlist()

返回一个字符列表,该列表对应于给定 baseinteger 的文本表示。

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(integer, base \\ 10)

查看源代码
@spec to_string(integer(), 2..36) :: String.t()

返回一个二进制数,该二进制数对应于给定 baseinteger 的文本表示。

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(digits, base \\ 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