浮動小数点数とは、小数点以下の桁を0桁以上持つ数値のことです。例えば、-2.4、0.1、3.14、16.984025、1024.0などがあります。
F#には3種類の浮動小数点型があります。
single: 4バイト(精度は約6〜9桁)。2.45fのように書きます。float: 8バイト(精度は約15〜17桁)。最も一般的な型です。2.45のように書きます。decimal: 16バイト(精度は28〜29桁)。主に金額を扱うときに使います。精度が高いため、丸め誤差が少なくなるからです。2.45mのように書きます。浮動小数点型によって、小数点以下に保存できる桁数は異なります。これを精度と呼びます。つまり、singleにPIを保存しようとすると、最初の6〜9桁だけが保存されます(最後の桁は丸められます)。
この演習では、貯蓄口座を扱います。貯蓄口座の残高は、毎年、その利率に基づいて更新されます。銀行が提示する利率は、口座に入っている金額(残高)によって決まります:
1000ドル未満の場合は0.5%。1000ドル以上5000ドル未満の場合は1.621%。5000ドル以上の場合は2.475%。毎年、政府は資金の一定割合を非課税で慈善団体に寄付することを認めています。親切な人なので、年末に残高がプラスになっていれば、その非課税の割合を2倍にし、1ドル単位で切り捨てます。寄付の後半分に税金がかかっても気にしません。
タスクは3つあり、それぞれが残高とその利率を扱います。
指定された残高に基づいて利率を計算する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であることに注意してください。