首页  >  文章  >  web前端  >  JavaScript趣题:买车子

JavaScript趣题:买车子

黄舟
黄舟原创
2017-02-04 15:33:301274浏览

小王有一台很旧的车,大概值2000块钱,而且很容易出手。

他看中了一台价值8000块的二手车,想在存够钱后买下它。

他估摸着每个月能存1000块钱。

他现在的车和那台二手车,每个月都会降价,最开始是降1%,然后每隔两个月,降价幅度都会增加0.5%。

比如,第一个月会降价1%,第二个月就降了1.5%,第三个月就还是降了1.5%,第四个月是2%。

换句话说,逢单月降价幅度和前一个月一样,逢双月,降价幅度比前一个月加0.5%。

你能帮帮他吗?

他至少得存多少个月的钱才能买下这部二手车?那时他买车后还可以剩下多少钱?

函数原型如下:

nbMonths(startPriceOld, startPriceNew, savingperMonth, percentLossByMonth)

分别对应:旧车价格,二手车价格,每月存款定额,第一个月降幅

例子:

nbMonths(12000, 8000, 1000, 1.5) // [0, 4000]

这种情况,旧车比二手车价值还高些,那还用等啥?直接买呗!还能赚个4000块!

nbMonths(8000, 8000, 1000, 1.5) // [0, 0]

这种情况,直接以旧换新,两两相抵了。

nbMonths(2000, 8000, 1000, 1.5) // [6, 766]

这种情况,得花上6个月,最后结余还剩766.158...等一串小数,四舍五入得766块。

这道题目,很简单的加减乘除,但诸位不要想太多了,比如存银行吃利息这样的主意~

好了,直接上代码了:

function nbMonths(startPriceOld, startPriceNew, savingperMonth, percentLossByMonth){  
    percentLossByMonth /= 100;  
    var months = 1;  
    var percentLossIncrement = 0.005;  
    var alreadyHaveMoney = 0;  
    while(startPriceOld + alreadyHaveMoney < startPriceNew){  
        if(months % 2 === 0){  
            percentLossByMonth += percentLossIncrement;  
        }  
        startPriceOld *= (1 - percentLossByMonth);  
        startPriceNew *= (1 - percentLossByMonth);  
        alreadyHaveMoney += savingperMonth;  
        months++;  
    }  
    return [months-1,Math.round(startPriceOld + alreadyHaveMoney - startPriceNew)];  
}

以上就是 JavaScript趣题:买车子的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn