Loop实现不正确,无法弄清楚我做错了什么

时间:2017-10-23 21:40:56

标签: javascript

我必须编写一个程序,给定一笔初始金额(本金),返回该金额必须保留在银行中的金额,以使其达到所需的金额(期望) 。利息每年支付,新的金额在纳税后每年重新投资。本金不征税,只征收年度应计利息。

当我尝试用这个数字测试程序时: 校长:1000 兴趣:0.01625 税:0.18 期望:1200

我应该得到14年的结果,但我得到了12年。

关于我如何实现循环可能存在逻辑错误,但无法弄清楚。

function calculateYears(principal, interest, tax, desired) {
      year = 0; 
      if (principal == desired) {
        return year; 
      } else {
        while (principal < desired) { 
            interestBeforeTaxes = principal * interest;
            taxes = interestBeforeTaxes * interest;
            finalInterest = interestBeforeTaxes - taxes;
            principal += finalInterest;
            year += 1;
        }
        return year; 
      }
}


console.log( calculateYears(1000, 0.01625, 0.18, 1200) );

2 个答案:

答案 0 :(得分:0)

刚试过它,它应该是

taxes = interestBeforeTaxes * tax

答案 1 :(得分:0)

另一种方法:

Math.ceil(Math.log(desired / principal) / Math.log(1 + interest * (1 - tax)))

如果你需要计算需要几十亿年或更长时间的东西,这应该更快:P

另外,如果需要的话,你需要花费一些 <=>你的利息低于你的利息(并且你的利息是积极的,税收低于利息),它会进入一个无限循环,你必须照顾该!