zinz und zinzeszinz *ARG*
Lynky
- javascript
Hi,
fuer ein englischsprachiges Property Management System versuche ich gerade Zinsen und spaeter die Gesamtrueckzahlung eines Kredites zu berechnen und zwar fuer
so weit so gut. Habe mir von Wikipedia mal so ca. 10-20 Formeln besorgt (http://en.wikipedia.org/wiki/Interest) und mir daraus folgende Javascriptformeln zusammengeschustert, die mir zunaechst einmal NUR die Gesamtzinsen berechnen:
Anmerkung: cperiod ist die compound period (z.B. 2 fuer halbjaehrige Zahlung) und rate ist der in einen floatwert umgerechnete Zinssatz.
Ich weiss sehr wohl, das ist ein ziemlich ekelhaftes Thema *gg* aber vielleicht weiss doch jemand Rat, wie ich die 2. Formel loesen kann.
Vielen Dank im voraus,
Lynky
Hallo,
(http://en.wikipedia.org/wiki/Interest) und mir daraus folgende
Wie Links hier anklickbar gemacht werden, steht in der FAQ -- Du erleichterst damit den Lesern Deines Beitrags die Arbeit.
- (loan * Math.pow(1+(rate/cperiod),cperiod*term)) - loan ---> falsche Werte
Was heisst "falsche Werte"? Gib mal Beispielwerte an, was Deiner Meinung nach schief laeuft. Wenn "rate" naemlich der selbe Wert wie unter 1) ist, ist allerdings ziemlich klar, was in die Hose geht (setze cperiod mal auf "1" und ueberlege Dir dann, was fuer eine enorme Verzinsung Du haettest.
Noch was anderes: ich halte Deine Variablennamen fuer suboptimal:
cperiod ist > 1 und eine natuerliche Zahl, schreib das besser als cperiods.
Dito fuer term.
rate sollte den Zinssatz nicht in Prozent sondern als normale Zahl beinhalten (also 0,05 statt 5). Fuer jede Berechnung wirst Du naemlich die 0,05 brauchen. Dann ersparst Du Dir auch die Divisionen durch 100.
Gruss
Thomas
Hi Thomas,
danke fuer Deine Antwort!
Was heisst "falsche Werte"? Gib mal Beispielwerte an
loan = 100;
rate = 0.1; // 10%
terms = 3; // for 3 years
cperiod = 2; // half-yearly
ergibt bei mir z.B. Gesamtzinsen von 34.01
Noch was anderes: ich halte Deine Variablennamen fuer suboptimal
Weiss nicht, ob Du da Recht hast. Denn sprichst Du auch von Abrechnungszeitraeumen oder - Intervallen?
Allerdings: Meine Posting-ueberschrift hingegen sollte wirklich geandert werden in ZinSesZinSen ;) Das viel mir gerade erst auf *peinlichis*
rate sollte den Zinssatz nicht in Prozent sondern als normale Zahl beinhalten
da hast Du was falsch verstanden, denn rate ist bereits eine normale Zahl, wie ich bereits schrieb in
»»rate ist der in einen floatwert umgerechnete Zinssatz
Sorry, wenn meine Antwort rechthaberisch klingen sollte - das ist sicherlich nicht meine Absicht.
Gruesse,
Lynky
Hallo,
Was heisst "falsche Werte"? Gib mal Beispielwerte an
loan = 100;
rate = 0.1; // 10%
terms = 3; // for 3 years
cperiod = 2; // half-yearlyergibt bei mir z.B. Gesamtzinsen von 34.01
Das stimmt doch, wenn bei 10% Jahreszins halbjährlich verzinst wird.
year period interest value
1 1 5 105
1 2 5,25 110,25
2 3 5,5125 115,7625
2 4 5,788125 121,550625
3 5 6,07753125 127,6281563
3 6 6,381407813 134,0095641
sum 34,00956406
viele Grüße
Axel
Hi Axel,
ja, wahrscheinlich hast Du Recht. Ich glaube, das Problem liegt nicht in der Formel sondern in der englischen Sprache. Ich war die ganze Zeit der Meinung, dass die gezahlten Zinsen pro Jahr abnehmen muessen, dass ist aber wohl bei dieser Methode NICHT der Fall.
Wenn ich richtig liege gibt es demnach 3 verschiedene Verzinsungsmoeglichkeiten:
Vielen Dank auch an Siechfred fuer die Formelsammlung, die kann ich sehr gut gebrauchen um die Principal and Interests am Montag nachzuschlagen!
Sorry, habe jetzt Feierabend und sehe zumindest HEUTE Antworten nicht mehr ein, was ich aber am Montag auf jeden Fall nachholen werde!
Schoenes Wochenende,
Lynky
Hallo,
loan = 100;
rate = 0.1; // 10%
Dann ist "rate" in Deiner zweiten Formel anders als in Deiner ersten (in Deiner ersten Formel ist es der Zinssatz in Prozent, in der zweiten dann nicht mehr).
Weiss nicht, ob Du da Recht hast. Denn sprichst Du auch von Abrechnungszeitraeumen oder - Intervallen?
Keine Ahnung. Aber wenn Du das jemandem erklaerst, sagst Du dann: 'das ist die Anzahl der Abrechungszeitraum_ oder Abrechnungszeitraeume'? Es kann natuerlich sein, dass die Variablennamen vorgegeben sind, dass ist das egal.
Gruss
Thomas
Tag Lynky.
- (loan * Math.pow(1+(rate/cperiod),cperiod*term)) - loan ---> falsche Werte
Du willst sicher diese Formel umsetzen:
Evtl. hilft dir diese Formelsammlung mit Erläuterungen (MS Word) ja weiter. Da müsstest du erstmal die Formel raussuchen, die deiner Vorgabe entspricht.
Nehmen wir mal an, du wolltest Zins und Zinseszins bei regelmäßiger Einzahlung. Dafür brauchst du erstmal den Aufzinsungsfaktor, für diesen wiederum brauchst du den Jahreszins:
function Aufzinszungsfaktor(zinssatz) {
var faktor = 1+(zinssatz/100);
return faktor;
}
Weiter geht's dann mit den eigentlichen Formeln. Angenommen, du hast regelmäßige unterjährig vorschüssige Einzahlungen und willst wissen, wieviel unter Berücksichtigung von Zins und Zinseszins am Ende rauskommt:
// E: Rate in Euro
// p: Zinssatz p.a.
// m: Zahlungsweise
// n: Laufzeit in Jahren
function Barwert(E,p,m,n) {
var q = Aufzinsungsfaktor(p);
var kapital = E*(m+(((m+1)*p)/200))*((Math.pow(q,n)-1)/(q-1));
var gesamt = E*m*n;
var zinseszins = kapital - gesamt;
alert("Summe der Einzahlungen: "+gesamt.toString()+"\nGesamtkapital: "+kapital.toString()+"\nZinseszins: "+zinseszins);
}
Das ergibt (noch entsprechend formatiert):
Gesamtkapital = 27.062 EUR
Einzahlungen = 18.000 EUR
Zins und Zinseszins = 9.062 EUR
Meintest du das so?
Siechfred
Hello,
mit einem Computer kann man das meistens viel genauer mit einer Iteration ausrechnen. Es gibt hier auch schon eine Lösung dafür im Archiv. Soweit ich mich daran erinnern kann, reichten vier Iterationen schon aus, um ein Ergebnis auf zwei Stellen hinter dem Komma (Währungsformat) zu erhalten.
Die Funktionen haben nämlich den Nachteil, dass sie mit höheren Exponenten extrem ungenau werden.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom