#javascript #arrays #function #for-loop
#javascript #массивы #функция #для цикла
Вопрос:
Я должен рассчитать обменный курс в качестве законного платежного средства для точной суммы. Точные бумажные деньги и монеты должны быть вставлены в массив. Я застрял на этом шаге и не знаю, как его решить.
function countChange(amount) {
const currency = [500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01];
const change = [];
for (let i = 0; i < currency.length; i ) {
const value = currency[i];
if (value <= amount) {
change.push(value)
}
}
return change;
};
console.log(countChange(500.26));
Комментарии:
1. Какой ожидаемый результат для
500.26
2.
exchange rate
ваш вопрос кажется немного запутанным, какое отношение имеет вычисление изменений к обменным курсам?. Чтобы рассчитать количество монет, просто продолжайте делить на наибольшее число, а затем из целого числа будет ваша монета, остаток для следующей наименьшей монеты..3. Это упражнение, которое почти каждый здесь должен решить хотя бы один раз в процессе обучения. Как бы вы (иначе не ваша программа ) продолжили подсчитывать валюту, которую нужно отдать?
Ответ №1:
Ниже приведен простой пример.
Просто просто выполните итерацию для каждого размера монеты, просто разделите текущую общую сумму на каждый размер монеты, если есть какие-либо монеты, затем поместите это в массив.
function countChange(amount) {
const currency = [500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01];
const change = [];
for (let i = 0; i < currency.length; i ) {
const coinsize = currency[i];
//how many coins?
const coins = Math.trunc(amount / coinsize);
//remove these from total
amount -= coinsize * coins;
//fix rounding problems.
amount = Math.round(amount * 100) / 100;
//add to our result
if (coins > 0)
{
change.push({
coinsize,
coins
});
}
}
return change;
};
console.log(countChange(500.26));
Ответ №2:
Я думаю, это может быть то, что вы ожидаете :
function countChange(amount) {
const currency = [500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01];
const change = [];
var changed = 0;
while(changed < amount){
for(var i = 0; i < currency.length; i ){
if(amount-currency[i] >= 0){
change.push(currency[i]);
changed =currency[i];
amount-=currency[i];
}
}
}
return change;
}
console.log(countChange(500.26))
Комментарии:
1. Но это неправильный результат … который добавляет до 500.25, а не 500.26
2. Никаких проблем, другой ответ лучше, чем