浮點數是一種小數點後帶有零或多個位數的數字。例如-2.4、0.1、3.14、5.、16.984025和1024.0。
不同的浮點數型別,小數點後能儲存的位數也不同,這就是所謂的精確度。
Go 有兩種浮點數型別:
float32:32 位元(約 6 至 9 位數精確度)。float64:64 位元(約 15 至 17 位數精確度)。
這是預設的浮點數型別。如你所見,這兩種型別能儲存的位數不同。
這表示,如果想在float32裡儲存 PI,只會存下前 6 到 9 位數(最後一位會四捨五入)。
預設情況下,Go 會為浮點數使用float64,除非這個浮點數是:
float32的變數,或float32的函式回傳,或float32()函式。math套件包含許多實用的數學函式。
在這道練習中,你會處理儲蓄帳戶。 每年,你的儲蓄帳戶餘額會根據它的利率更新。 銀行給你的利率取決於你帳戶裡的金額(也就是餘額):
0美元時為 3.213%(餘額會變得更負)。0美元,且小於1000美元時為 0.5%。1000美元,且小於5000美元時為 1.621%。5000美元時為 2.475%。你有四項任務,每一項都會處理你的餘額和它的利率。
實作InterestRate()函式,根據指定的餘額計算利率:
InterestRate(200.75)
// => 0.5
注意,回傳的值是float32。
實作Interest()函式,根據指定的餘額計算利息:
Interest(200.75)
// => 1.003750
注意,回傳的值是float64。
實作AnnualBalanceUpdate()函式,將利率納入考量,計算年度餘額更新:
AnnualBalanceUpdate(200.75)
// => 201.75375
注意,回傳的值是float64。
實作YearsBeforeDesiredBalance()函式,計算達到目標餘額所需的最少年數,並考量到每年利息都會加到餘額上。
這表示一年後的餘額是:起始餘額 + 起始餘額的利息。
兩年後的餘額是:一年後的餘額 + 一年後餘額的利息。
依此類推,直到當年的餘額大於或等於目標餘額。
balance := 200.75
targetBalance := 214.88
YearsBeforeDesiredBalance(balance, targetBalance)
// => 14
注意,回傳的值是int。