Elixir에는 정수와 실수, 두 가지 종류의 수가 있어요.
정수는 소수점이 없는 수예요.
integer = 3
# => 3
실수는 소수점 뒤에 한 자리 이상의 숫자가 있는 수예요. 64비트 배정밀도 부동소수점 형식을 사용해요.
float = 3.45
# => 3.45
Integer와 Float 모듈에서는 이런 타입을 다루는 데 유용한 함수를 찾을 수 있어요. 기본 산술 연산자는 Kernel 모듈에 정의되어 있어요.
정수와 실수는 하나의 산술 식 안에서 함께 섞어 쓸 수 있어요. 식에 실수를 사용하면 결과도 실수가 돼요.
2 * 3
# => 6
2 * 3.0
# => 6.0
하지만 나눗셈을 할 때는 정수만 사용하더라도 결과가 항상 실수가 돼요.
6 / 2
# => 3.0
실수를 정수로 변환하려면 trunc/1로 소수 부분을 버리면 돼요.
이 연습 문제에서는 프리랜서가 프로젝트 매니저와 소통할 수 있도록 하는 코드를 작성해요. 일당과 월 요금을 빠르게 계산해 주는 몇 가지 도구를 만드는 것이 목표예요. 원한다면 주어진 할인을 적용할 수도 있어요.
먼저 프리랜서와 프로젝트 매니저 사이에 몇 가지 규칙을 정해요:
때로는 프리랜서가 일당에 할인을 적용하기도 해요. 예를 들어 가장 충성도 높은 고객이나 비영리 고객을 위해서요.
할인은 백분율을 나타내는 소수로 표현해요. 예를 들어 25.0은 25%예요.
daily_rate라는 함수를 구현해서 시급을 매개변수로 받아 일당을 계산해요. 계약에는 하루의 청구 가능한 시간이 8시간이라고 정의되어 있어요.
FreelancerRates.daily_rate(60)
# => 480.0
반환되는 일당은 실수여야 해요.
할인을 적용한 후의 가격을 계산하는 apply_discount 함수를 구현해요.
FreelancerRates.apply_discount(150, 10)
# => 135.0
반환되는 값은 항상 실수여야 하며, 어떤 방식으로도 반올림하면 안 돼요.
monthly_rate 함수를 구현해서 할인이 적용된 월 요금을 계산해요. 이 함수는 시급과 할인율(퍼센트), 두 가지 매개변수를 받아요.
FreelancerRates.monthly_rate(77, 10.5)
# => 12130
반환되는 월 요금은 가장 가까운 정수로 올림해야 해요.
예산, 시급, 할인을 받아서 그 예산으로 온전히 일할 수 있는 날이 며칠인지 계산하는 days_in_budget 함수를 구현해요.
FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1
반환되는 일수는 소수점 첫째 자리까지 내림해야 해요.
Exercism에 가입하고 Elixir 트랙을 개념 58개연습 문제 168개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.