0

我需要一个函数的帮助,它可以计算抵押年金摊销表,其输出以列和付款金额、本金支付、利息支付等行为单位,按每月排序,如下面的链接所示: 输出示例

输出文件格式应为 .cvs。目前我被这个女巫困住了,离结果还很远:

var i = 5/100;
var loanAmount = 15000;
var m = 12;

var monthlyPayment = loanAmount*(i/12)*Math.pow((1+i/12), m) / (Math.pow((1+i/12), m)-1)

var currentBalance = loanAmount;   
var paymentCounter = 1;
var totalInterest = 0;
monthlyPayment = monthlyPayment;
		
while(currentBalance > 0) {
    //this calculates the portion of your monthly payment that goes towards interest
    towardsInterest = (i/12)*currentBalance;  
		
    if (monthlyPayment > currentBalance){
        monthlyPayment = currentBalance + towardsInterest;
    }
		
    towardsBalance = monthlyPayment - towardsInterest;
    totalInterest = totalInterest + towardsInterest;
    currentBalance = currentBalance - towardsBalance;
}

非常感谢您对此的任何帮助。

4

1 回答 1

0

尝试这样的事情:

const annuity = (C, i, n) => C * (i/(1-(1+i)**(-n)));

const balance_t = (C, i, P) => {
  const period_movements = {
    base: C
  }
  period_movements.interest = C*i;
  period_movements.amortization = P - (C*i);
  period_movements.annuity = P;
  period_movements.final_value = Math.round((C - period_movements.amortization)*100)/100;

  return period_movements;
}

const display_mortgage = (C, i, n) => {
  const payements = annuity(C, i, n);
  let movements = balance_t(C, i, payements);
  while (movements.final_value>-.01){
    console.log(movements);
    movements = balance_t(movements.final_value, i, payements);
  }
}

display_mortgage(20000, 0.05, 4);

输出:

{ base: 20000,
  interest: 1000,
  amortization: 4640.236652069255,
  annuity: 5640.236652069255,
  final_value: 15360 }
{ base: 15360,
  interest: 768,
  amortization: 4872.236652069255,
  annuity: 5640.236652069255,
  final_value: 10488 }
{ base: 10488,
  interest: 524.4,
  amortization: 5115.836652069255,
  annuity: 5640.236652069255,
  final_value: 5372 }
{ base: 5372,
  interest: 268.6,
  amortization: 5371.6366520692545,
  annuity: 5640.236652069255,
  final_value: 0 }
于 2017-08-07T12:22:17.577 回答