Calculer le taux d'intérêt en Java (TVM)


J'ai travaillé sur un projet Java qui est une calculatrice qui peut être utilisée pour calculer différents scénarios d'intérêt composé (très similaire à la fonction TVM trouvée sur une calculatrice graphique comme celle-ci)

La fonction principale de la calculatrice pour calculer les valeurs manquantes en utilisant les valeurs connues dans une formule. J'ai fait fonctionner toutes les formules sauf celle qui calcule le taux d'intérêt (I)

J'en ai fait recherche et apparemment il n'y a pas de formule pour calculer le taux d'intérêt. Ce site: http://www.getobjects.com/Components/Finance/TVM/formulas.html montre la méthode que je dois utiliser, mais cela nécessite une certaine itération pour trouver I en utilisant des essais et des erreurs. (Vérifiez le lien, faites défiler jusqu'à la rubrique "Taux d'intérêt par an")

Voici la structure que j'ai mise en place pour cela:

public static double calculateI(double N, double PV, double PMT, double FV, double PY){
    //method for calculating I goes here

    return I;
}

Je ne sais pas comment implémenter cela, quelqu'un pourrait-il suggérer comment cela peut être fait ou me diriger dans la bonne direction?

Merci d'avance.


Voici mon code après la suggestion faite par @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;
}
Author: Ortomala Lokni, 2013-08-12

1 answers

Essayez quelque chose comme:

double calculateI(/*all values for varialbles*/){
//definition;
}

Double.valueOf(d).est égal à (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: Vous devez gérer les cas de bord. L'équation peut ne jamais converger vers 0.

 0
Author: rocketboy, 2013-08-12 08:54:16