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(MontantEchéance echéance, DuréePrêt durée, TauxNetPrêt taux, TauxAssurancePrêt assurance) { var taegMensuel = (taux + assurance).TauxPeriodiqueMensuel(); var montant = Math.Round(echéance.Valeur * (1 - Math.Pow(1 + taegMensuel.Valeur, -durée.NombreMois)) / taegMensuel.Valeur); return(new Prêt(new(montant), echéance, taux, durée, assurance)); }
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); }
public void Calcul_Taux() { var montant = new MontantPrêt(169_000); var mensualité = new MontantEchéance(1011); var durée = new DuréePrêt(180); var prêt = new CalculatricePrêt().Calculer(montant, mensualité, durée); var tauxAttendu = new TauxNetPrêt(0.85); var acceptable = prêt.Taux <tauxAttendu * 1.01 && prêt.Taux> tauxAttendu * 0.99; acceptable.Should().BeTrue($"taux attendu {tauxAttendu} - taux trouvé {prêt.Taux}"); }
public void Calcul_Mensualité() { var montant = new MontantPrêt(169_000); 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(montant, durée, taux, assurance); var échéanceAttendue = 1011; prêt.Echéance.Round().Should().Be(échéanceAttendue); }