浮點數是帶有小數點後零個或多個位數的數字。例如 -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。不同的浮點數型別可以儲存不同數量的小數點後位數,這稱為它的精確度。這表示如果試著把 PI 存進 single,只會儲存前 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。