Integer
Integer
정수(integer)를 다루는 함수들의 모듈이에요. 정수에 동작하는 함수 중 일부는 Kernel에도 있어요.
출처: Integer
본문
Elixir에서 정수는 임의 정밀도(arbitrary precision)를 지원해요. 즉 아무리 큰 정수도 정확하게 표현되고 연산돼요. 이 모듈은 정수의 변환, 나눗셈, 진법(base) 변환, 문자열 파싱 등을 도와주는 함수를 제공해요.
예를 들어 정수와 문자열 사이를 변환하거나, 어떤 정수가 짝수인지 홀수인지, 특정 진법으로 표현했을 때 어떻게 되는지 등을 다룰 수 있어요. Integer.digits/2 같은 함수로 정수를 자릿수 리스트로 분해하고, Integer.undigits/2로 다시 합칠 수 있어요. Integer.to_string/2는 :binary, :octal, :decimal, :hex 같은 진법으로 정수를 문자열로, Integer.parse/2는 문자열을 정수로 해석해요.
이런 변환·파싱 함수 외에도 Integer.mod/2, Integer.floor_div/2 같은 나눗셈 관련 함수가 있어요. floor_div/2는 결과를 음의 무한대 방향으로 버림하고, mod/2는 나머지 연산에서 피제수(dividend)의 부호를 따르지 않고 제수(divisor)의 부호를 따르도록 정의해요.
한 가지 유의할 점은, Elixir의 div/2와 rem/2(Kernel)는 나머지가 피제수의 부호를 따른다는 점이에요. 예를 들어 div(-7, 2)는 -3이고 rem(-7, 2)는 -1이 돼요. 반면 Integer.floor_div/2와 Integer.mod/2는 제수의 부호를 따르도록 정의되어 있어서, 부호가 다른 값들도 일관된 규칙으로 다뤄져요. 부호 처리가 중요한 알고리즘(예: 음수 값을 다루는 그리드 이동, 순환 인덱스 계산 등)에서는 이 차이를 꼭 염두에 두어야 해요.
이 모듈의 함수 목록과 각각의 상세한 동작은 doc 위의 함수 시그니처에서 확인할 수 있어요. 정수와 관련된 대부분의 일을 이 모듈에서 처리할 수 있으니, 변환이나 파싱, 진법 계산이 필요하면 먼저 이 모듈의 함수가 있는지 살펴보는 게 좋아요.