JSFiddle - React, Tailwind, and code Playground

by blesh

HTML

<script src="https://raw.github.com/dtrebbien/BigDecimal.js/master/build/BigDecimal-all-last.js"></script>

JavaScript

var IRRval = [],
    financed = new BigDecimal('22000'),
    period = 24,
    rental = new BigDecimal('1017.5000');

IRRval.push(-financed);
for ( i = 0; i < period; i++) {
    IRRval.push(rental);
}

var x = new BigDecimal('0.01');
var IRR = x.multiply(IRRCalc( IRRval, new BigDecimal('0.001') ));

function IRRCalc(CArray, guest) {
  inc = new BigDecimal('0.000001');
  do {
    guest = guest.add(inc);
    NPV = new BigDecimal('0');
    var one = new BigDecimal('1');
    debugger;
    for (var j = new BigDecimal('0'); j.isLessThan(CArray.length); j.add(one)) {
          NPV = NPV.add( CArray[j] / guest.add(one).pow(j) );
    }
  } while(NPV.isGreaterThan(0));
  return guest.multiply(100);
}

console.log(IRR);