2017-09-29 2 views
1

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

http://www.calculator.net/amortization-calculator.html?cloanamount=1000&cloanterm=3&cinterestrate=7&printit=0&x=69&y=15

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; 
    } 
+0

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

+0

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

+0

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. –

Antwort

1

Ihr Problem ist, dass Sie die falsche Geschwindigkeit benutzen Sie, als ob die monatliche Rate yearlyrate/12 war, während es in der Tat (1 + yearlyrate)^(1/12) -1 (das ist Rate, die yearlyrate gibt, wenn Sie es 12-mal Verbindung.

zum Beispiel für einen Satz von 7%, ist die monatliche Rate ~ 0,5654% und 0,5833% wie Ihre Berechnung findet.

ersetzt Ihre Formel aus (Doppel) yearlyInterestRate/100/12 bis

sollte Ihnen das korrekte Ergebnis geben (~ 30.7789 $ pro Monat)

1

Basierend auf meiner Kreditaufnahme Erfahrung (in den USA nur), wird die größere Anzahl häufiger von Kreditgebern belastet. Sie berechnen eine "periodische Rate", bei der es sich um eine monatliche Pauschale oder um die Anzahl der Tage in der Leihfrist handeln kann. Dann berechnen sie am Ende der Periode Zinsen auf das ausstehende Kapital.

Wenn Sie einen Online-Rechner von einer kreditgebenden Institution verwenden, sind die Werte, die sie Ihnen geben, was sie Ihnen für das Darlehen berechnen. Sie müssen möglicherweise Ihren Code anpassen, um ein gewünschtes Ergebnis zu erhalten, aber wenn Sie Geld von einer kreditgebenden Institution leihen, werden Sie wahrscheinlich eine höhere Zahlung haben.

Einer meiner Hypothekendarlehensgeber verwendete eine hybride Monats-/Tagesrate. Wenn ich Standardzahlungen geleistet habe, wurden die vollen Monatszinsen berechnet, unabhängig davon, wann die Zahlung geleistet wurde.Wenn ich zusätzliche Zahlungen geleistet habe, wurde der Kapitalgeber sofort gekürzt, so dass die Zinsen meines nächsten Monats etwas mehr oder weniger hoch sein können, abhängig davon, an welchem ​​Tag ich meine Zahlung geleistet habe. Machte es schwer, ihre Calcs zu vergleichen. Alle meine anderen Kreditgeber haben Rate/12 verwendet und zusätzliche Zahlungen durch Herabsetzung des Prinzipals für den folgenden Monat angewendet.

Verwandte Themen