Треки
/
F#
F#
/
Вправи
/
Відсотки - це цікаво
Відсотки - це цікаво

Відсотки - це цікаво

Навчальна вправа

Вступ

Числа з плаваючою комою

Число з плаваючою комою - це число з нулем або більше цифр після десяткового розділювача. Наприклад: -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 цифр (а останню цифру буде округлено).

Вказівки

У цій вправі ми працюватимемо з ощадними рахунками. Щороку баланс ощадного рахунку оновлюється відповідно до його відсоткової ставки. Відсоткова ставка, яку дає нам банк, залежить від суми грошей на рахунку (його балансу):

  • 3.213% для відʼємного балансу (це дає відʼємні відсотки).
  • 0.5% для додатного балансу, меншого за 1000 доларів.
  • 1.621% для додатного балансу, що становить 1000 доларів або більше, але менше ніж 5000 доларів.
  • 2.475% для додатного балансу, що становить 5000 доларів або більше.

Щороку держава дозволяє нам пожертвувати відсоток своїх грошей на благодійність без сплати податків. Оскільки ми хороші люди, то якщо наприкінці року баланс виявиться додатним, ми беремо цей неоподатковуваний відсоток і подвоюємо його, округлюючи вниз до найближчого цілого долара. Ми не проти сплатити податок на другу половину пожертви.

На нас чекають три завдання, кожне з яких стосується балансу та його відсоткової ставки.

1. Обчисліть відсоткову ставку

Реалізуйте функцію interestRate, щоб обчислити відсоткову ставку на основі заданого балансу:

interestRate 200.75m
// => 0.5f

Зауважте, що повернене значення має тип single.

2. Обчисліть відсотки

Реалізуйте метод interest, щоб обчислити відсотки на основі заданого балансу:

interest 200.75m
// => 1.00375m

Зауважте, що повернене значення має тип decimal.

3. Обчисліть щорічне оновлення балансу

Реалізуйте функцію annualBalanceUpdate, щоб обчислити щорічне оновлення балансу з урахуванням відсоткової ставки:

annualBalanceUpdate 200.75m
// => 201.75375m

Зауважте, що повернене значення має тип decimal.

4. Обчисліть, скільки грошей пожертвувати

Реалізуйте функцію amountToDonate, щоб обчислити, скільки грошей пожертвувати на благодійність, на основі балансу та неоподатковуваного відсотка, який дозволяє держава:

let balance = 550.5m
let taxFreePercentage = 2.5
amountToDonate balance taxFreePercentage
// => 27

Зауважте, що повернене значення має тип int.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
F# Exercism

Час розпочати Відсотки - це цікаво?

Зареєструйтеся на Exercism, щоб вивчати й опановувати F#, а також 18 концепцій148 вправ та справжнє наставництво від людей, і все це безкоштовно.