Zinsen in Java?
Hallo, ich habe in Java eine Formel zur Berechnung von Laufzeitsparbriefen welche falsch ist. In Excel habe ich die richtige Formel. Ich weiß aber nicht wie ich diese in Java implementieren kann. Würde mich freuen wenn mir jemand den Code schicken kann.
Hier zwei Screenshots, einer aus Excel und einer aus Java:
2 Antworten
Der Excel-Screenshot zeigt diese Formel:
In Java wurde angestrebt, die Berechnung der Potenz durch eine Schleife zu realisieren. Aus dem Code ist aber unklar, ob die Variable iJahr einen Anfangswert erhält und ob der Anfangswert aufgabengerecht gewählt wurde. Bemerkenswert ist in der Java-Lösung weiterhin, dass das nach Ablauf eines Jahres erhaltene Kapital jeweils auf ganze Cent gerundet wird. Diese Rundung kann durchaus ein kaufmännisches Erfordernis sein; in dem Excel-Programm findet sie aber nicht statt.
Eine while-Schleife ist für die hier auszuführende Berechnung eigentlich nicht erforderlich, da die Zahl der Schleifendurchläufe sich aus dem Anlagezeitraum ergibt und von vornherein bekannt ist. Eine while-Schleife verwendet man eigentlich nur, wenn die Zahl der Schleifendurchläufe unbekannt ist. In einem Fall, in dem die Zahl der Durchläufe vonvornherein bekannt ist, bevorzuge ich die Verwendung einer for-Schleife:
dBetrag = pdAnlagebetrag;
dMultipikator = 1 + Zinssatz/100;
for (int i = 0; i < piLaufzeit; i++) {
dBetrag *= dMultiplikator;
dBetrag = Math.round(dBetrag*100.0)/100.0;
}
Hier habe ich für den Multiplikator (also die Basis der Potenz) eine zusätzliche Variable eingeführt, um diesen Wert nur einmal berechnen zu müssen.
Die Anweisung
dBetrag *= dMultiplikator;
ist gleichbedeutend mit
dBetrag = dBetrag*dMultiplikator;
Man kann die Formel doch auch so in Java eingeben
return pAnlagebetrag*Math.pow((1+Zinssatz),piLaufzeit)
"pi" ist insoweit etwas verwirrend.
Oder natürlich auch per Schleife, was groß anderes wird pow vielleicht gar nicht machen.
double zinsfaktor=1.0+(double)Zinssatz/100;
double kapfaktor=1.0;
for(int i=0;i<piLaufzeit;++i)kapfaktor*=zinsfaktor;
return (double)pAnlagebetrag*kapfaktor;
Mal ungetestet
;