tech234: Zinsrechnung mit Typescript

Gegeben sind ein Start- und ein Endwert und ein Zinssatz. Ziel ist es zu berechnen, wie viele Jahre zum Erreichen des gegebenen Geld(end-)wertes im Bezug zum gegebenen Zinssatzes benötigt werden. Gelöst werden soll in TypeScript und gelöst habe ich es schon direkt in JavaScript, aber nun hakt es... HTML-Datei:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/typescript" src="Ueb10A5.ts">
    </script>
</head>
<body>
<h1>Zinsberechnung</h1>
<form name="Zinsen">
    <label for="inputStart">Bitte Kapitalwert eingeben: </label>
    <input type="number" id="inputStart" min="0" step="1" >

    <label for="inputEnde">Bitte Endwert eingeben: </label>
    <input type="number" id="inputEnde" min="0" step="1" >

    <label for="inputSatz">Bitte zu verwendenden Zinssatz eingeben: </label>
    <input type="number" id="inputSatz" min="0" step="1" >

    <input type="button" value="Berechne" onClick="berechne()">
    <br>
    <label for="ausgabe">Anlagezeitraum: </label><p id="ausgabe">0</p>
</form>
</body>
</html>

TypeScript-Datei:

function berechne(){
    let start: number = parseInt((<HTMLInputElement>document.getElementById("inputStart")).value);
    let ende: number = parseInt((<HTMLInputElement>document.getElementById("inputEnde")).value);
    let zSatz: number = parseInt((<HTMLInputElement>document.getElementById("inputSatz")).value);
    let temp: number = start;
    let count: number = 0;
    let ret: string = null;
    for(var i = 0; temp <= ende; i++){
        temp += (temp*(zSatz/100));
        count=i;
    }
    document.getElementById("ausgabe").innerHTML = "Sie benoetigen "+count+" Jahre.";
}
  1. Tach!

    Gegeben sind ein Start- und ein Endwert und ein Zinssatz. Ziel ist es zu berechnen, wie viele Jahre zum Erreichen des gegebenen Geld(end-)wertes im Bezug zum gegebenen Zinssatzes benötigt werden. Gelöst werden soll in TypeScript und gelöst habe ich es schon direkt in JavaScript, aber nun hakt es...

    Da TypeScript eine Obermenge von JavaScript ist, ist jeder funktionierender JavaScript-Code funktionierender TypeScript-Code. Problem gelöst.

    Definiere "hakt es"!

    dedlfix.

    1. Definiere "hakt es"!

      Wenn ich es in der obigen Form starte, verändert sich mein Wert bei "ausgabe" nicht. Er bleibt bei "0" stehen. Meine Version (direkt in JS) läuft. Alles gleich. :/ (Also natürlich dann bspw. var statt let, etc...)

      1. Tach!

        Definiere "hakt es"!

        Wenn ich es in der obigen Form starte, verändert sich mein Wert bei "ausgabe" nicht. Er bleibt bei "0" stehen. Meine Version (direkt in JS) läuft. Alles gleich. :/ (Also natürlich dann bspw. var statt let, etc...)

        TypeScript läuft nicht im Browser. Der kennt nur JavaScript. TypeScript-spezifischer Code muss vorher nach JavaScript transpiliert werden.

        Im Übrigen gibt es in Browsern Entwicklertools. Besonders die Console sollte man beobachten, weil da die Fehlermeldungen erscheinen.

        dedlfix.

        1. Das wir TypeScript nutzen sollen...tzz...habe im script-Tag statt "typescript" "javascript" geschrieben und nun läuft es...ich Danke Dir. :)

  2. @@tech234

    Gegeben sind ein Start- und ein Endwert und ein Zinssatz. Ziel ist es zu berechnen, wie viele Jahre zum Erreichen des gegebenen Geld(end-)wertes im Bezug zum gegebenen Zinssatzes benötigt werden

        let temp: number = start;
        let count: number = 0;
        let ret: string = null;
        for(var i = 0; temp <= ende; i++){
            temp += (temp*(zSatz/100));
            count=i;
        }
    

    Die Holzhammermethode: So oft draufhauen, bis es passt.

    Du willst du Gleichung $$s \cdot \left( 1 + z \right)^c \ge e$$ nach c auflösen. (s = start, z = zSatz/100, c = count, e = ende)

    $$\begin{align}
    s \cdot \left( 1 + z \right)^c & \ge e
    \left( 1 + z \right)^c & \ge \frac{e}{s}
    \ln \left( 1 + z \right)^c & \ge \ln \frac{e}{s}
    c \cdot \ln \left( 1 + z \right) & \ge \ln e - \ln s
    c & \ge \frac{\ln e - \ln s}{\ln \left( 1 + z \right)}
    \end{align}$$

    (Wegen s > 0 und z > 0, d.h. 1 + z > 1, ln (1 + z) > 0 kehrt sich das Ungleichheitszeichen nicht um.)

    LLAP 🖖

    --
    „Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.“ —Johann Wolfgang von Goethe
  3. @@tech234

    HTML-Datei:

    <html lang="en">
    

    Nein. Deine Seite ist auf deutsch. Es muss heißen:

    <html lang="de">
    
        <br>
    

    br sollte nur bei sowas wie Gedichten/Liedtexten oder Postadressen vorkommen.

        <label for="ausgabe">Anlagezeitraum: </label><p id="ausgabe">0</p>
    

    Das wird nichts. Ein Absatz kann kein Label haben. Ein output-Element aber:

        <label for="ausgabe">Anlagezeitraum: </label><p><output id="ausgabe">0</output></p>
    

    (oder auch ohne p-Element)

    LLAP 🖖

    --
    „Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.“ —Johann Wolfgang von Goethe