Berechnung mit Javascript innerhalb einer Schleife
Ralf Mohn
- javascript
Hallo zusammen.
Folgendes Problem habe ich:
es dreht sich um ein Zinses-Zins-Programm, welches mit einer while-schleife gesteuert werden soll. Die Schleife soll abbrechen, wenn das endkapital das doppelte des Anfangskapital erreicht hat (while(endkapital>anfangskapital*2)).
Innerhalb dieser Do-While-Schleife, soll die Berechnung durchgeführt werden. Die normale Formeln zu einer solchen Berechnung lautet ja: Endkapital = Anfangskapital * (Zinssatz + 1) ^Anzahl der Jahre [^=hoch].
das Problem ist, das die Anzahl der Jahre ja unbekannt ist, da diese mit der Schleife berechnet werden sollen. Wie kann ich also eine Variable mit einer Variable potenzieren?
Achja: Die Ausgabe muss auch die Berechneten Kapitale nach jedem Jahr enthalten.
Vielen Dank schonmal im Vorraus für die Hilfe :)
-Ralf Mohn
Nabend,
das Problem ist, das die Anzahl der Jahre ja unbekannt ist, da diese mit der Schleife berechnet werden sollen. Wie kann ich also eine Variable mit einer Variable potenzieren?
Indem du sie einfach immer erhöhst. Vor der Schleife auf null setzten, dann immer eins erhöhen und neu berechnen.
Achja: Die Ausgabe muss auch die Berechneten Kapitale nach jedem Jahr enthalten.
Auch kein Problem:
AnzahlJahre = 0
Schleifenbeginn
AnzahlJahre = AnzahlJahre ++ 1
neues Endkapital berechnen
Ausgabe von AnzahlJahre und Endkapital
Schleifenende
So in etwa :)
Bis denne,
hi,
erstmal danke für die antwort :)
Nabend,
das Problem ist, das die Anzahl der Jahre ja unbekannt ist, da diese mit der Schleife berechnet werden sollen. Wie kann ich also eine Variable mit einer Variable potenzieren?
Indem du sie einfach immer erhöhst. Vor der Schleife auf null setzten, dann immer eins erhöhen und neu berechnen.
ja mit dem jahr++, soweit hatte ich's noch verstanden.
Achja: Die Ausgabe muss auch die Berechneten Kapitale nach jedem Jahr enthalten.
Auch kein Problem:
AnzahlJahre = 0
Schleifenbeginn
AnzahlJahre = AnzahlJahre ++ 1
neues Endkapital berechnen
hier liegt das Hauptproblem. Ich weiß nicht, mit welcher funktion ich das Endkapital berechnen lassen kann. Der Rest ist ansich einfach, aber Javascript scheint kein ^ für hoch, oder ein geteilt durch -(Potenzwert) anzunehmen...
mfg
Ausgabe von AnzahlJahre und Endkapital
SchleifenendeSo in etwa :)
Bis denne,
Nabend,
Ich weiß nicht, mit welcher funktion ich das Endkapital berechnen lassen kann.
Und warum hast du dann nicht schnell auf http://selfhtml.teamone.de/javascript/objekte/math.htm nachgesehen, welche Funktion du benötigen könntest?
Bis denne,
Und warum hast du dann nicht schnell auf http://selfhtml.teamone.de/javascript/objekte/math.htm nachgesehen, welche Funktion du benötigen könntest?
Hubert,
Warum sollte man das für die Grundrechenarten tun?
Gunnar
Nabend,
Warum sollte man das für die Grundrechenarten tun?
Ich bekenne mich schuldig... War wohl wieder bei dem Potenzieren, welches natürlich so nicht benötigt wird :/
Bis denne,
So in etwa :)
Viel zu kompliziert.
Kapital = Anfangskapital
Schleife:
Kapital = Kapital * (1 + Zinssatz)
Ausgabe Kapital
bis Kapital >= 2 * Anfangskapital
Gunnar
So in etwa :)
Viel zu kompliziert.
Kapital = Anfangskapital
Schleife:
Kapital = Kapital * (1 + Zinssatz)
Ausgabe Kapital
bis Kapital >= 2 * AnfangskapitalGunnar
das problem ist, dass man dann so etwas ausgegeben bekommt:
Jahr 1: Endkapital: 10200
Jahr 2: Endkapital: 10200
Jahr 3: Endkapital: 10200
da der Zinseszins noch nicht berücksichtigt wurde :(
»»Und warum hast du dann nicht schnell auf http://selfhtml.teamone.de/javascript/objekte/math.htm nachgesehen, welche Funktion du benötigen könntest?
da gibt es zwar eine Methode mit pow, allerdings weiß ich nicht wie man die in die Schleife einbaut :(
das problem ist, dass man dann so etwas ausgegeben bekommt:
da der Zinseszins noch nicht berücksichtigt wurde :(
Ralf,
Dann sieht deine Schleife wohl anders aus als meine. Poste doch mal den Code.
Gunnar
das problem ist, dass man dann so etwas ausgegeben bekommt:
da der Zinseszins noch nicht berücksichtigt wurde :(Ralf,
Dann sieht deine Schleife wohl anders aus als meine. Poste doch mal den Code.
Gunnar
hier mal der wichtige teil:
var kapital=0;
var endkap=0;
var zins=0;
i=0;kapital=prompt("Anfangskapital","10000");
zins=prompt("Zinzen","0.02");kapital=eval(kapital);
zins=eval(zins);
i=eval(i);
endkap=eval(endkap);do {
Hier muss dann die entsprechende Bedingung rein, die bewirkt das die Zinseszinsberechnung durchgeführt wird<<
i++;document.write("Jahr "+i+": Endkapital: "+endkap+" <br>");
} while(endkap<kapital*2);
Die ausgabe soll dann so aussehen:
Jahr 1: Endkapital: 10200
Jahr 2: Endkapital: 10404
Jahr 3: Endkapital: 10820.16
Jahr 4: Endkapital: 11036.5632
Jahr 5: Endkapital: 11257.29446
Rundung bau ich da dann natürlich noch mit rein.
-Ralf
i=eval(i);
Überflüssig.
endkap=eval(endkap);
Ersetzen durch endkap = kapital;
Hier muss dann die entsprechende Bedingung rein, die bewirkt das die Zinseszinsberechnung durchgeführt wird<<
Und warum schreibst du hier nicht rein, was ich schon gesagt hatte?
endkap *= (1 + zins);
Gunnar
hi
Und warum schreibst du hier nicht rein, was ich schon gesagt hatte?
endkap *= (1 + zins);
ich glaub du meintest das hier:
do {
endkap = kapital*(1 + zins);
i++;
document.write("Jahr "+i+": Endkapital: "+endkap+" <br>");
} while(endkap<kapital*2);
aber dann kommt am ende nur das hier raus:
Jahr 1: Endkapital: 10200
Jahr 2: Endkapital: 10200
Jahr 3: Endkapital: 10200
Jahr 4: Endkapital: 10200
Jahr 5: Endkapital: 10200
weil jetzt dem Programm nicht gesagt wird, dass im 2. Jahr im dem endwert des 1. Jahres gerechnet werden soll...
aber ich hatte jetzt grad ne Idee und hab folgendes gemacht:
do {
endkap = kapital*(1 + zins);
i++;
document.write("Jahr "+i+": Endkapital: "+endkap+" <br>");
kapital = endkap
} while(endkap<kapital*2);
jetzt bricht er die schleife nur nicht ab, da die variable kapital sich ja jetzt laufende verändert... es sollen (dürfen) aber keine weiteren variablen hinzugefügt werden.
-Ralf
endkap *= (1 + zins);
ich glaub du meintest das hier:
do {
endkap = kapital*(1 + zins);
Nein! Um Himmels Willen!
Ich meinte
endkap = endkap * (1 + zins);
und das schon seit [pref:t=70253&m=404351], nur dass meine Variablen anders heißen.
Der Operator *= ist eine abgekürzte Schreibweise, siehe http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#berechnung
Gunnar
endkap *= (1 + zins);
ich glaub du meintest das hier:
do {
endkap = kapital*(1 + zins);Nein! Um Himmels Willen!
Ich meinte
endkap = endkap * (1 + zins);
und das schon seit [pref:t=70253&m=404351], nur dass meine Variablen anders heißen.
hmm aber dann hab ich ja gar kein anfangskapital da mit drin ( = kapital). Dann bekomm ich als ergebniss nur:
do {
endkap = endkap * (1 + zins);
i++;
document.write("Jahr "+i+": Endkapital: "+endkap+" <br>");
} while(endkap<kapital*2);
Jahr 1: Endkapital: 0
Jahr 2: Endkapital: 0
Jahr 3: Endkapital: 0
usw...
hmm aber dann hab ich ja gar kein anfangskapital da mit drin ( = kapital).
Doch, weil du ja vor der Schleife
endkap = kapital;
zuweist, siehe [pref:t=70253&m=404401]
Gunnar
hmm aber dann hab ich ja gar kein anfangskapital da mit drin ( = kapital).
Doch, weil du ja vor der Schleife
endkap = kapital;
zuweist, siehe [pref:t=70253&m=404401]Gunnar
:D es funktioniert :D
vielen, vielen, vielen, dank :)
Hast mir echt geholfen :) Ich glaub ich wär allein nicht mehr drauf gekommen ;-)
-Ralf
:D es funktioniert :D
Hast mir echt geholfen :) Ich glaub ich wär allein nicht mehr drauf gekommen ;-)
Ralf,
Eine echte Hilfe war ich nur, wenn du auch verstehst, warum es jetzt funktioniert. Dann kommst du beim nächsten Mal auch selber drauf.
Gerngeschehen,
Gunnar
Endkapital = Anfangskapital * (Zinssatz + 1) ^Anzahl der Jahre
das Problem ist, das die Anzahl der Jahre ja unbekannt ist, [...] Die Ausgabe muss auch die Berechneten Kapitale nach jedem Jahr enthalten.
Das heißt doch für dich, die Anzahl der Jahre ist nicht unbekannt, sondern 1. Damit läufst du die Schleife durch.
Wenn's nur darum gegangen wäre, die Zeit auszurechnen, nach der das Kapital sich vedoppelt hat, ginge das ohne Schleife. Einfach die Formel umstellen:
Anzahl der Jahre = ln (Endkapital / Anfangskapital) / ln (1 + Zinssatz)
= ln 2 / ln (1 + Zinssatz)
Gunnar