檢視原始碼 整數 (Elixir v1.16.2)
處理整數的函式。
某些處理整數的函式可以在 Kernel
中找到
摘要
函式
傳回給定 integer
的順序數字。
傳回兩個給定整數的延伸最大公因數。
執行取整數除法。
傳回兩個給定整數的最大公因數。
計算整數除法的模數餘數。
剖析整數的文字表示。
計算 base
乘方 exponent
。
傳回與 integer
在給定 base
中的文字表示相符的字元清單。
傳回與 integer
在給定 base
中的文字表示相符的二進位。
傳回由順序 digits
表示的整數。
守衛
判斷 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
是否為奇數。
如果給定的 整數
是奇數,則傳回 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}
的 tuple。否則會傳回 :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
傳回與 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'
傳回與 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"
@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