Числом з плаваючою комою називають число, у якому після десяткового розділювача стоїть нуль або більше цифр. Наприклад, -2.4, 0.1, 3.14, 16.984025 та 1024.0.
Різні типи з плаваючою комою можуть зберігати різну кількість цифр після десяткового розділювача. Це називається точністю. Тож якщо ми спробуємо зберегти PI у single, збережуться лише перші від 6 до 9 цифр (а остання цифра буде округлена).
Числа з плаваючою комою в Clojure читаються як Doubles; із суфіксом M вони читаються як BigDecimals.
Double: 8 байтів (точність ~15-17 цифр). Це найпоширеніший тип. Записується як 2.45.BigDecimal: ціле значення довільної точності без масштабу та 32-бітний цілочисельний масштаб. Записується як 2.45M.У цій вправі ми працюватимемо з ощадними рахунками. Щороку баланс нашого ощадного рахунку оновлюється відповідно до його відсоткової ставки. Відсоткова ставка, яку дає нам банк, залежить від суми грошей на рахунку (його балансу):
1000 доларів.1000 доларам і меншого за 5000 доларів.5000 доларам.Щороку, перш ніж оновиться баланс нашого ощадного рахунку, уряд дозволяє нам пожертвувати відсоток наших грошей на благодійність без сплати податків. Оскільки ми хороші люди, якщо наприкінці року наш баланс додатний, ми жертвуємо подвоєну суму на благодійність, округлюючи до найближчого цілого долара в менший бік.
У нас є три завдання, кожне з яких стосується нашого балансу та його відсоткової ставки.
Реалізуйте функцію interest-rate, щоб обчислити відсоткову ставку на основі вказаного балансу:
(interest-rate 200.75M)
;;=> 0.5
Зверніть увагу, що повернене значення має тип Double.
Реалізуйте функцію annual-balance-update, щоб обчислити річне оновлення балансу з урахуванням відсоткової ставки:
(annual-balance-update 200.75M)
;;=> 201.75375M
Зверніть увагу, що повернене значення має тип BigDecimal.
Реалізуйте функцію amount-to-donate, щоб обчислити, скільки грошей пожертвувати на благодійність, на основі балансу та відсотка, який уряд дозволяє не оподатковувати:
(def balance 550.5M)
(def tax-free-percentage 2.5)
(amount-to-donate balance tax-free-percentage)
;;=> 27
Зверніть увагу, що повернене значення має тип int.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Clojure, а також 12 концепцій105 вправ та справжнє наставництво від людей, і все це безкоштовно.