查看源代码 Integer (Elixir v1.16.2)
用于处理整数的函数。
一些处理整数的函数位于 Kernel
中
摘要
函数
返回给定 integer
的有序数字。
返回两个给定整数的扩展最大公约数。
执行向下取整的整数除法。
返回两个给定整数的最大公约数。
计算整数除法的模余数。
解析整数的文本表示。
计算 base
乘以 exponent
的幂。
返回一个字符列表,该列表对应于给定 base
中 integer
的文本表示。
返回一个二进制数,该二进制数对应于给定 base
中 integer
的文本表示。
返回由有序 digits
表示的整数。
守卫
确定一个 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
函数
@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]
@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}
@spec floor_div(integer(), neg_integer() | pos_integer()) :: integer()
执行向下取整的整数除法。
如果其中一个参数不是整数,或者 divisor
为 0
,则引发 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
@spec gcd(integer(), integer()) :: non_neg_integer()
返回两个给定整数的最大公约数。
integer1
和 integer2
的最大公约数 (GCD) 是能同时整除 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
@spec mod(integer(), neg_integer() | pos_integer()) :: integer()
计算整数除法的模余数。
此函数执行 向下取整除法,这意味着结果始终具有 divisor
的符号。
如果其中一个参数不是整数,或者 divisor
为 0
,则引发 ArithmeticError
异常。
示例
iex> Integer.mod(5, 2)
1
iex> Integer.mod(6, -4)
-2
解析整数的文本表示。
可以提供一个可选的 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
@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
返回一个字符列表,该列表对应于给定 base
中 integer
的文本表示。
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'
返回一个二进制数,该二进制数对应于给定 base
中 integer
的文本表示。
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"
@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