Calcolare il tasso di interesse in Java (TVM)
Ho lavorato su un progetto Java che è una calcolatrice che può essere utilizzata per calcolare diversi scenari di interesse composto (molto simile alla funzione TVM trovata su una calcolatrice grafica come questa)
La funzione principale della calcolatrice è quella di calcolare i valori mancanti utilizzando i valori noti in una formula. Ho ottenuto tutte le formule funzionanti tranne quella che calcola il tasso di interesse (I )
Ho fatto alcuni ricerca e apparentemente non esiste una formula diritta per calcolare il tasso di interesse. Questo sito web: http://www.getobjects.com/Components/Finance/TVM/formulas.html mostra il metodo che devo usare, ma richiede una certa iterazione per trovare I usando tentativi ed errori. (Controlla il link, Scorri verso il basso fino alla voce "Tasso di interesse annuo")
Ecco la struttura che ho impostato per questo:
public static double calculateI(double N, double PV, double PMT, double FV, double PY){
//method for calculating I goes here
return I;
}
Non sono sicuro di come implementarlo, qualcuno potrebbe suggerire come questo può essere fatto o indicarmi nella giusta direzione?
Grazie in anticipo.
Ecco il mio codice dopo il suggerimento fatto da @ rocketboy
public static double formulaI(double ip, double N, double PV, double PMT, double FV, double PY){
double I1=(PV*Math.pow((1+ip),N))+((PMT*1)*(Math.pow((1+ip),N))-1)+FV;
return I1;
}
public static double calculateI(double N, double PV, double PMT, double FV, double PY){
double ip=0;
double res;
do{
res = formulaI(ip,N,PV,PMT,FV,PY);
ip=ip+0.01;
System.out.println(res);
}while(res!=0);
double I=ip*PY;
return I;
}
1 answers
Prova qualcosa come:
double calculateI(/*all values for varialbles*/){
//definition;
}
Doppio.Valore di (d).uguale a(0,0);
long ip =0;
double res;
do{
res = calculateI(ip, /*other constant values*/);
ip++; /*Or you can increase ip according to your logic*/
}while ( Double.valueOf(res).equals(0.0/*Expected result*/));
Edit: Devi gestire i casi limite. L'equazione potrebbe non convergere mai a 0.