부동소수점 수는 소수점 뒤에 자릿수가 0개 이상 있는 수예요. 예를 들면 -2.4, 0.1, 3.14, 16.984025, 1024.0 같은 수들이에요.
F#에는 세 가지 부동소수점 타입이 있어요.
single: 4바이트(정밀도 약 6~9자리). 2.45f로 써요.float: 8바이트(정밀도 약 15~17자리). 가장 흔하게 쓰는 타입이에요. 2.45로 써요.decimal: 16바이트(정밀도 28~29자리). 보통 금액 데이터를 다룰 때 사용하는데, 정밀도가 높아서 반올림 오류가 적기 때문이에요. 2.45m로 써요.부동소수점 타입마다 소수점 뒤에 저장할 수 있는 자릿수가 달라요. 이를 정밀도라고 해요. 그래서 single에 PI를 저장하려고 하면 처음 6~9자리만 저장돼요(마지막 자리는 반올림돼요).
이 연습 문제에서는 저축 계좌를 다뤄요. 매년 저축 계좌의 잔액은 이자율에 따라 업데이트돼요. 은행에서 제공하는 이자율은 계좌에 있는 금액(잔액)에 따라 달라져요:
1000달러 미만일 때 0.5%.1000달러 이상 5000달러 미만일 때 1.621%.5000달러 이상일 때 2.475%.매년 정부는 자신의 돈의 일정 비율을 세금 없이 자선 단체에 기부할 수 있게 해줘요. 착한 사람이니까, 연말에 잔액이 양수라면 비과세 비율을 두 배로 하고 가장 가까운 정수 달러로 내림해요. 기부금의 나머지 절반에는 세금을 내도 괜찮아요.
세 가지 작업이 있어요. 각 작업은 잔액과 이자율을 다뤄요.
지정된 잔액을 기준으로 이자율을 계산하는 interestRate 함수를 구현해 보세요:
interestRate 200.75m
// => 0.5f
참고로, 반환되는 값은 single 타입이에요.
지정된 잔액을 기준으로 이자를 계산하는 interest 메서드를 구현해 보세요:
interest 200.75m
// => 1.00375m
참고로, 반환되는 값은 decimal 타입이에요.
이자율을 고려하여 연간 잔액 업데이트를 계산하는 annualBalanceUpdate 함수를 구현해 보세요:
annualBalanceUpdate 200.75m
// => 201.75375m
참고로, 반환되는 값은 decimal 타입이에요.
잔액과 정부가 허용하는 비과세 비율을 기준으로 자선 단체에 기부할 금액을 계산하는 amountToDonate 함수를 구현해 보세요:
let balance = 550.5m
let taxFreePercentage = 2.5
amountToDonate balance taxFreePercentage
// => 27
참고로, 반환되는 값은 int 타입이에요.
Exercism에 가입하고 F# 트랙을 개념 18개연습 문제 148개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.