浮動小数点数とは、小数点以下に0桁以上の数字を持つ数値のことです。たとえば、-2.4、0.1、3.14、16.984025、1024.0などがあります。
浮動小数点数の型が違うと、小数点以下に保持できる桁数も変わります。この桁数のことを精度と呼びます。つまり、PIをsingleに格納しようとしても、最初の6〜9桁しか保持されません(最後の桁は丸められます)。
Clojureでは、浮動小数点数はDoubleとして読み込まれます。末尾にMという接尾辞を付けると、BigDecimalとして読み込まれます。
Double: 8バイト(約15〜17桁の精度)。もっとも一般的な型です。2.45のように書きます。BigDecimal: 任意精度の整数によるスケールなし値と、32ビット整数のスケールを持ちます。2.45Mのように書きます。この演習では、預金口座を扱います。預金口座の残高は、毎年、その金利に基づいて更新されます。銀行が適用する金利は、口座に入っている金額(残高)によって決まります。
1000ドル未満の場合は0.5%。1000ドル以上5000ドル未満の場合は1.621%。5000ドル以上の場合は2.475%。毎年、預金口座の残高が更新される前に、政府は収入の一定割合を非課税で慈善団体に寄付することを認めています。あなたは優しい人なので、年末に残高がプラスであれば、その2倍の金額を慈善団体に寄付します。端数は1ドル単位で切り捨てます。
ここには3つのタスクがあり、それぞれ残高とその金利を扱います。
指定された残高から金利を計算する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であることに注意してください。