檢視原始碼 整數 (Elixir v1.16.2)

處理整數的函式。

某些處理整數的函式可以在 Kernel 中找到

摘要

防護

判斷 integer 是否為偶數。

判斷 integer 是否為奇數。

函式

傳回給定 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

函式

連結到這個函式

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
@spec parse(binary(), 2..36) :: {integer(), remainder_of_binary :: binary()} | :error

剖析整數的文字表示。

可以提供一個二進位數字的選用 base。如果未提供 base,則會使用 10。

如果成功,則會傳回一個格式為 {integer, remainder_of_binary} 的 tuple。否則會傳回 :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()

傳回與 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(integer, base \\ 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(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