我必须编写一个程序,给定一笔初始金额(本金),返回该金额必须保留在银行中的金额,以使其达到所需的金额(期望) 。利息每年支付,新的金额在纳税后每年重新投资。本金不征税,只征收年度应计利息。
当我尝试用这个数字测试程序时: 校长: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) );
答案 0 :(得分:0)
刚试过它,它应该是
taxes = interestBeforeTaxes * tax
答案 1 :(得分:0)
另一种方法:
Math.ceil(Math.log(desired / principal) / Math.log(1 + interest * (1 - tax)))
如果你需要计算需要几十亿年或更长时间的东西,这应该更快:P
另外,如果需要的话,你需要花费一些 <=>你的利息低于你的利息(并且你的利息是积极的,税收低于利息),它会进入一个无限循环,你必须照顾该!