【问题标题】:don't know how to solve this exercice不知道如何解决这个练习
【发布时间】:2019-04-16 15:12:28
【问题描述】:

我必须以法定货币计算汇率,以获得准确的金额。必须将确切的纸币和硬币插入数组中。卡在这一步,不知道怎么解决。

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));

【问题讨论】:

  • 500.26 的预期输出
  • exchange rate您的问题似乎有点令人困惑,计算变化与汇率有什么关系?要计算硬币,只需除以最大的数字,然后从整数中得到你的硬币,余数是下一个最低的硬币..
  • 这是几乎每个人在学习过程中都必须至少解决一次的练习。 (又名不是你的程序)将如何计算要捐赠的货币?

标签: javascript arrays function for-loop


【解决方案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))

    【讨论】:

    • 但这是错误的结果...加起来是 500.25,而不是 500.26
    • 没有问题,其他答案更好
    猜你喜欢
    • 2011-01-22
    • 2019-08-10
    • 2021-03-10
    • 1970-01-01
    • 2014-03-14
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多