トラック
/
Clojure
Clojure
/
演習
/
利息は面白い
利息は面白い

利息は面白い

学習演習

はじめに

浮動小数点数とは、小数点以下に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のように書きます。

説明

この演習では、預金口座を扱います。預金口座の残高は、毎年、その金利に基づいて更新されます。銀行が適用する金利は、口座に入っている金額(残高)によって決まります。

  • 残高がマイナスの場合は-3.213%。
  • 残高が1000ドル未満の場合は0.5%。
  • 残高が1000ドル以上5000ドル未満の場合は1.621%。
  • 残高が5000ドル以上の場合は2.475%。

毎年、預金口座の残高が更新される前に、政府は収入の一定割合を非課税で慈善団体に寄付することを認めています。あなたは優しい人なので、年末に残高がプラスであれば、その2倍の金額を慈善団体に寄付します。端数は1ドル単位で切り捨てます。

ここには3つのタスクがあり、それぞれ残高とその金利を扱います。

1. 金利を計算する

指定された残高から金利を計算するinterest-rate関数を実装してください。

(interest-rate 200.75M)
;;=> 0.5

戻り値はDoubleであることに注意してください。

2. 年間の残高更新を計算する

金利を考慮して、年間の残高更新を計算するannual-balance-update関数を実装してください。

(annual-balance-update 200.75M)
;;=> 201.75375M

戻り値はBigDecimalであることに注意してください。

3. 寄付する金額を計算する

残高と、政府が認める非課税の割合から、慈善団体に寄付する金額を計算するamount-to-donate関数を実装してください。

(def balance 550.5M)
(def tax-free-percentage 2.5)

(amount-to-donate balance tax-free-percentage)
;;=> 27

戻り値はintであることに注意してください。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Clojure Exercism

利息は面白いを始める準備はできましたか?

Exercismに登録すれば、12個のコンセプト105個の演習、そして本物の人間によるメンタリングとともに、Clojureを学んでマスターできます。すべて無料です。