Число з плаваючою комою - це число з нулем або більше цифр після десяткового розділювача. Наприклад: -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 доларів.1000 доларів або більше, але менше ніж 5000 доларів.5000 доларів або більше.Щороку держава дозволяє нам пожертвувати відсоток своїх грошей на благодійність без сплати податків. Оскільки ми хороші люди, то якщо наприкінці року баланс виявиться додатним, ми беремо цей неоподатковуваний відсоток і подвоюємо його, округлюючи вниз до найближчого цілого долара. Ми не проти сплатити податок на другу половину пожертви.
На нас чекають три завдання, кожне з яких стосується балансу та його відсоткової ставки.
Реалізуйте функцію 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.
Зареєструйтеся на Exercism, щоб вивчати й опановувати F#, а також 18 концепцій148 вправ та справжнє наставництво від людей, і все це безкоштовно.