Задача про флирансеров и стоимости их участия в проектах. Нужна помощь с фунцией priceWithMonthlyDiscount
Ребят, нужна Ваша помощь. Изучаю JS около 4 мес. Задача достаточно проста, но смогла завести меня в тупик. Собственно условие:
Часто клиенты фрилансеров нанимают их для проектов, рассчитанных на несколько месяцев. В этих случаях фрилансер решает предложить скидку за каждый полный месяц, а оставшиеся дни оплачиваются по дневной ставке. В каждом месяце 22 расчетных дня. Помогите им оценить стоимость таких проектов с учетом почасовой ставки, количества дней, в течение которых проект охватывается, и ежемесячной ставки дисконтирования. Скидка всегда передается в виде числа, где 42% становится 0.42. Результат необходимо округлить до ближайшего целого числа.
Вот моё решение:
function priceWithMonthlyDiscount(ratePerHour, numDays, discount) {
return (
Math.ceil(
Math.floor(ratePerHour * (1 - discount / 100)) * (numDays % 22) +
22 * Math.ceil(numDays / 22) * Math.floor(ratePerHour * (1 - discount / 100)))
)
}
console.log(priceWithMonthlyDiscount(16, 70, 0))
Обязательно такого вида.
где:
ratePerHour - плата за час
numDays - количество дней для проекта
discount - скидка
Вот ошибка:
P.s.: пробовал использовать YaGPT2 - подвижек нет
Ответы (1 шт):
Основная ошибка, вы плату за час не переводили в плату за день
function priceWithMonthlyDiscount(ratePerHour, numDays, discount) {
if (discount && discount > 1 ) discount = discount / 100;
const rateByDay = ratePerHour * 8;
const fullMonthDays = Math.floor(numDays / 22) * 22;
return Math.round((fullMonthDays * (1 - discount) + numDays - fullMonthDays) * rateByDay);
}
console.log(priceWithMonthlyDiscount(16, 70, 0));
Так же, множественные округления лишние, достаточно округлить результат.
