Il est souvent frustrant de constater que certaines fonctions financières extrêmement pratiques sont disponibles dans les grands tableurs, mais qu'elles sont absentes des bibliothèques standards des langages de programmation. Pourtant, ces fonctions sont utilisées quotidiennement pour résoudre des problèmes de financement, d'épargne, d'investissement ou d'amortissement. Des logiciels historiques tels que Lotus 1-2-3 et Quattro Pro ont largement contribué à populariser ce type d'outils en offrant aux utilisateurs des fonctions prêtes à l'emploi capables d'effectuer des calculs financiers complexes en quelques secondes. Lorsqu'un programmeur souhaite reproduire ces mêmes résultats dans une application C++, il doit généralement implémenter lui-même les formules mathématiques sous-jacentes.
Parmi les fonctions les plus utiles figure la fonction «NPer» (Number of Periods), ou «Nombre de périodes» en français. Cette fonction permet de déterminer combien de versements seront nécessaires pour atteindre un objectif financier donné ou pour rembourser complètement une dette. Elle est particulièrement appréciée dans les domaines de la finance personnelle, des prêts hypothécaires, des placements et de la planification budgétaire. Grâce à elle, il devient possible d'estimer la durée requise pour accumuler un capital cible ou, inversement, de savoir combien de temps sera nécessaire pour rembourser un emprunt en fonction du montant des paiements effectués périodiquement.
Le calcul repose sur plusieurs paramètres financiers importants, notamment le taux d'intérêt appliqué, le montant du versement périodique, la valeur actuelle du capital, la valeur future souhaitée ainsi que le moment où les paiements sont effectués. En combinant ces éléments à l'aide de fonctions logarithmiques, il est possible d'obtenir une estimation précise du nombre de périodes nécessaires. Dans l'exemple suivant, le programme C++ calcule combien de périodes seront requises pour atteindre un objectif financier donné en disposant d'un solde actuel de 633 $, d'un versement de 2 000 $ et d'un taux d'intérêt de 11,5 %. Le code C++ présenté reproduit ainsi le comportement de la fonction NPer que l'on retrouve dans les grands tableurs financiers :
Essayer maintenant !
- #include <iostream>
- #include <cmath>
-
- double NPer(double Rate,double Pmt,double PV,double FV,double PType) {
- double F=Pmt*(1+Rate*PType);
- if(fabs(Rate)>1E-6) return log((F-Rate*FV)/(PV*Rate+F))/log(1+Rate);
- else return -(FV+PV)/(PV*Rate+F);
- }
-
- int main() {
- std::cout << "En disposant de 2000$, et que le solde actuel est de 633$ et l'interêt de 11,5%:";
- std::cout << NPer(0.115,-2000,-633,50000,0) << std::endl;
- return 0;
- }
on obtiendra le résultat suivant :
En disposant de 2000$, et que le solde actuel est de 633$ et l'intérêt de 11,5%:12.12