Ich versuche, ein kleines Programm zu erstellen, um eine String-Ausgabe zu generieren, die mir den gesamten rückzahlbaren Betrag für ein Darlehen (Zinseszinsen auf monatlicher Basis) angibt. Ich benutze zwei Online-Rechner, um meine Arbeitsweise zu validieren, beide unterscheiden sich jedoch voneinander.Berechnung des Amortisationszeitplans mit unterschiedlichen Ergebnissen
- Darlehensbetrag: 1000
- Rate: 7%
- Dauer: 36 Monate
- monatliche Rückzahlungs: 30,78
- Summe rückzahlbar: £ 1.108,04 (dies ist nahe dem Ergebnis, das ich bin erwartet)
der oben wird über den folgenden Online-Rechner validiert: https://www.moneysupermarket.com/loans/calculator/
jedoch auf so ziemlich jedem anderen Online-Rechner erhalte ich:
- monatliche Rückzahlungs: 30.88
- Summe rückzahlbar: £ 1,111.53
Beispiele:
https://en-gb.calculatestuff.com/financial/loan-amortization-calculator
Weiterhin in meinem eigenen Code bekomme ich 1.111.53. Ich bin also ein bisschen verwirrt, welcher Endwert korrekt ist. Ich würde gerne näher an die erste Zahl von 1.108.04 kommen, da dies der Wert ist, den ich gesucht habe, aber ich bin mir nicht sicher, was ich hier vermisse.
public void CompoundCalculator(double lenderRate, double loanPeriodInMonths, double desiredLoanAmount){
var repaymentAmount = PMT(7, 36, 1000);
var balance = desiredLoanAmount;
var totalInterest = 0.00;
for (var i = 0; i < loanPeriodInMonths;i++)
{
var monthlyInterest = Math.Round(balance * ((lenderRate/1200)),2);
balance -= Math.Round(repaymentAmount - monthlyInterest,2) ;
totalInterest += monthlyInterest;
}
//do something here later with totalInterest variable
}
public static double PMT(double yearlyInterestRate, int totalNumberOfMonths, double loanAmount)
{
var rate = (double)yearlyInterestRate/100/12;
var denominator = Math.Pow((1 + rate), totalNumberOfMonths) - 1;
return (rate + (rate/denominator)) * loanAmount;
}
Versuchen Sie sicherzustellen, dass Sie jeden Ort doppelt verwenden. sagen wir zum Beispiel 100.0/12.0. Dh jede Zahl, die in einer Berechnung verwendet wird, ist ein float/double – pm100
Hallo pm100, danke für deinen Vorschlag. Ich habe noch einige Verbesserungen vorgenommen, so dass alle wichtigen Ganzzahlen als Doppel deklariert werden, aber das hat leider keinen Unterschied gemacht. – Sulphy
das ist seltsam, dass der erste Rechner nur ein wenig aus ist. Ich habe es manuell berechnet und die gleiche Antwort erhalten wie Sie. Dies ist Vermutung, aber die Firma, die den ersten Rechner besitzt, könnte den Betrag etwas senken, damit sie besser aussehen als ihre Konkurrenz. –