В Elixir є два різних види чисел: цілі числа та числа з плаваючою комою.
Цілі числа - це числа без дробової частини.
integer = 3
# => 3
Числа з плаваючою комою - це числа з однією або більше цифрами після десяткового розділювача. Вони використовують 64-бітний формат із плаваючою комою подвійної точності.
float = 3.45
# => 3.45
У модулях Integer і Float можна знайти корисні функції для роботи з цими типами. Базові арифметичні оператори визначено в модулі Kernel.
Цілі числа та числа з плаваючою комою можна поєднувати в одному арифметичному виразі. Якщо у виразі використати число з плаваючою комою, результат теж буде числом з плаваючою комою.
2 * 3
# => 6
2 * 3.0
# => 6.0
Однак під час ділення результат завжди буде числом з плаваючою комою, навіть якщо використано лише цілі числа.
6 / 2
# => 3.0
Щоб перетворити число з плаваючою комою на ціле число, можна відкинути дробову частину за допомогою trunc/1.
У цій вправі ми будемо писати код, який допоможе фрилансерові спілкуватися з менеджером проєкту. Наше завдання - надати кілька інструментів для швидкого обчислення денних і місячних ставок, за потреби із заданою знижкою.
Спершу встановімо кілька правил між фрилансером і менеджером проєкту:
Іноді фрилансер пропонує застосувати знижку до своєї денної ставки (наприклад, для найвідданіших клієнтів або для неприбуткових організацій).
Знижки подаються як дробові числа, що позначають відсотки, наприклад, 25.0 (25%).
Реалізуйте функцію daily_rate, яка обчислює денну ставку за заданою погодинною ставкою, переданою як параметр.
Домовленість визначає, що день має 8 оплачуваних годин.
FreelancerRates.daily_rate(60)
# => 480.0
Повернена денна ставка має бути числом з плаваючою комою.
Реалізуйте функцію apply_discount, щоб обчислити ціну після застосування знижки.
FreelancerRates.apply_discount(150, 10)
# => 135.0
Повернене значення завжди має бути числом з плаваючою комою, без жодного округлення.
Реалізуйте функцію monthly_rate, яка обчислює місячну ставку зі знижкою.
Вона приймає два параметри: погодинну ставку та знижку у відсотках.
FreelancerRates.monthly_rate(77, 10.5)
# => 12130
Повернену місячну ставку слід округлити вгору (до найближчого більшого цілого).
Реалізуйте функцію days_in_budget, яка приймає бюджет, погодинну ставку та знижку й обчислює, на скільки повних робочих днів цього вистачить.
FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1
Повернену кількість днів слід округлити вниз (до найближчого меншого) до одного знака після коми.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.