學習軌道
/
Clojure
Clojure
/
練習
/
利息真有趣
利息真有趣

利息真有趣

學習練習

簡介

浮點數是指小數分隔符後帶有零或多位數字的數字。例如 -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%。

每年,在儲蓄帳戶餘額更新之前,政府允許你將一定比例的錢捐給慈善機構,而且免稅。因為你是個好人,如果年底時你的餘額是正的,你會捐出這個金額的兩倍給慈善機構,並向下取整到最接近的整數元。

你有三項任務,每一項都會涉及你的餘額和它的利率。

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,全部免費。