public Prêt Calculer(MontantPrêt montantTotal, MontantEchéance échéance, DuréePrêt durée) { var taux = 0.5; var tauxPrêt = new TauxNetPrêt(0.5); var tauxAssurance = new TauxAssurancePrêt(0.15); var prêt = Calculer(montantTotal, durée, tauxPrêt, tauxAssurance); if (prêt.Echéance == échéance) { return(prêt); } if (prêt.Echéance > échéance) { do { taux = taux - 0.01; tauxPrêt = new(taux); prêt = Calculer(montantTotal, durée, tauxPrêt, tauxAssurance); } while (prêt.Echéance > échéance); } else { do { taux = taux + 0.01; tauxPrêt = new(taux); prêt = Calculer(montantTotal, durée, tauxPrêt, tauxAssurance); } while (prêt.Echéance < échéance); } return(prêt); }
public Prêt Calculer(MontantPrêt montantTotal, DuréePrêt durée, TauxNetPrêt taux, TauxAssurancePrêt assurance) { var taegMensuel = (taux + assurance).TauxPeriodiqueMensuel(); var échéance = (montantTotal * taegMensuel).Valeur / (1 - Math.Pow( 1 + taegMensuel.Valeur, -durée.NombreMois)); return(new Prêt(montantTotal, new(échéance), taux, durée, assurance)); }
public void Calcul_MontantTotal() { var mensualité = new MontantEchéance(1011); var durée = new DuréePrêt(180); var taux = new TauxNetPrêt(0.85); var assurance = new TauxAssurancePrêt(0.15); var prêt = new CalculatricePrêt().Calculer(mensualité, durée, taux, assurance); var montantAttendu = new MontantPrêt(168924); prêt.Montant.Should().Be(montantAttendu); }