부동소수점 수는 소수점 구분 기호 뒤에 자릿수가 0개 이상 있는 수예요. -2.4, 0.1, 3.14, 16.984025, 1024.0 같은 수가 그래요.
부동소수점 타입마다 소수점 구분 기호 뒤에 저장할 수 있는 자릿수가 달라요. 이를 정밀도라고 해요. 그래서 single에 PI를 저장하려고 하면 처음 6~9자리까지만 저장돼요(마지막 자릿수는 반올림돼요).
Clojure에서 부동소수점 수는 Double로 읽어요. M 접미사를 붙이면 BigDecimal로 읽어요.
Double: 8바이트(정밀도 약 15~17자리)예요. 가장 흔히 쓰는 타입이에요. 2.45처럼 써요.BigDecimal: 임의 정밀도의 정수 unscaled 값과 32비트 정수 scale로 이루어져 있어요. 2.45M처럼 써요.이 연습 문제에서는 저축 계좌를 다뤄요. 매년 저축 계좌의 잔액은 이자율에 따라 갱신돼요. 은행이 정해 주는 이자율은 계좌에 들어 있는 금액, 즉 잔액에 따라 달라져요.
1000달러 미만일 때는 0.5%예요.1000달러 이상 5000달러 미만일 때는 1.621%예요.5000달러 이상일 때는 2.475%예요.정부는 매년, 저축 계좌의 잔액이 갱신되기 전에, 돈의 일정 비율을 비과세로 자선 단체에 기부할 수 있도록 허용해요. 착한 사람이니까, 연말에 잔액이 양수라면 이 금액의 두 배를 자선 단체에 기부하는데, 1달러 단위로 내림해요.
세 가지 과제가 있고, 각 과제는 잔액과 이자율을 다뤄요.
주어진 잔액을 바탕으로 이자율을 계산하는 interest-rate 함수를 구현해요.
(interest-rate 200.75M)
;;=> 0.5
반환되는 값은 Double이라는 점에 유의해요.
이자율을 고려해 연간 잔액 갱신액을 계산하는 annual-balance-update 함수를 구현해요.
(annual-balance-update 200.75M)
;;=> 201.75375M
반환되는 값은 BigDecimal이라는 점에 유의해요.
잔액과 정부가 허용하는 비과세 비율을 바탕으로 자선 단체에 기부할 금액을 계산하는 amount-to-donate 함수를 구현해요.
(def balance 550.5M)
(def tax-free-percentage 2.5)
(amount-to-donate balance tax-free-percentage)
;;=> 27
반환되는 값은 int라는 점에 유의해요.
Exercism에 가입하고 Clojure 트랙을 개념 12개연습 문제 105개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.