Nella mia soluzione invece ho cambiato la funzione di utilizzata dall'algoritmo di bisezione.
Metto il codice in c# (non ci vuole molto a convertirlo in Js).
public staticdouble CalcolaVA(int rateTotali, int ratePagate, double rata, double interesse)
{
double totale = 0;
double interesseNormalizzato = (interesse / 100) / 12; //viene calcolato mensilmente
for (int i = 1; i <= rateTotali - ratePagate; i++)
{
double denominatore = Math.Pow(1 + interesseNormalizzato, i);
totale += rata * (1 / denominatore);
}
return totale;
}