C# sind diese Rechenwege zu Zinsen so richtig?
Kurz und knapp: In der Schule haben wir das Thema Zinsen und ich will eine Art Converter zum ermitteln der Werte programmieren. Sind die Rechenwege so richtig?
Hier der Code:
Musste den Code in 3 Teile aufteilen.
private void CmdAnzeigen_Click(object sender, EventArgs e)
{
double summe;
double Laufzeit;
double Kapital1, Kapital2, Kapital3;
double Zinsen1, Zinsen2, Zinsen3;
double Zinssatz1, Zinssatz2, Zinssatz3;
// Hr (1, 2) = Hochrechnung.
if (Txt3.TextLength == 0)
Laufzeit = 1;
else
Laufzeit = Convert.ToInt32(Txt3.Text);
if (Chk1.Checked == true)
{
Zinsen1 = Convert.ToDouble(TxtEingabe1.Text);
Zinssatz1 = Convert.ToDouble(TxtEingabe2.Text);
double x = Zinssatz1;
double y = Laufzeit;
double Hr = System.Math.Pow(x, y);
summe = Zinsen1 / Hr * 100;
LblAnzeige.Text = "Das Ergebnis ist: " + summe + "\n" + "Der Rechenweg: " + Zinsen1 + " : " + x + "hoch" + y + " * 100" + "\n" +
"Zinsen geteilt durch Zinssatz (hoch Laufzeit) mal 100";
}
else if (Chk2.Checked == true)
{
Kapital2 = Convert.ToDouble(TxtEingabe1.Text);
Zinssatz2 = Convert.ToDouble(TxtEingabe2.Text);
double x = Zinssatz2;
double y = Laufzeit;
double Hr1 = System.Math.Pow(x, y);
summe = Kapital2 * Hr1 / 100;
LblAnzeige.Text = "Das Ergebnis ist: " + summe + "\n" + "Der Rechenweg: " + Kapital2 + " * " + x + "hoch" + y + " / 100" + "\n" +
"Kapital mal Zinssatz (hoch Laufzeit) geteilt durch 100";
}
else if (Chk3.Checked == true)
{
Zinsen3 = Convert.ToDouble(TxtEingabe1.Text);
Kapital3 = Convert.ToDouble(TxtEingabe2.Text);
double x = Kapital3;
double y = Laufzeit;
double Hr2 = System.Math.Pow(x, y);
summe = Zinsen3 / Hr2 * 100;
LblAnzeige.Text = "Das Ergebnis ist: " + summe + "\n" + "Der Rechenweg: " + Zinsen3 + " : " + x + "hoch" + y + " * 100" + "\n" +
"Zinsen geteilt durch Kapital (hoch Laufzeit) mal 100";
}
}
Falls ihr oben kaum was erkennt:
Ich denke es gibt beim Rechen mit z.b. "hoch 2" Probleme, im unteren Bild können niemals 100€ Zinsen rauskommen. Das ist so, wie wenn ich 100€ zur Bank bringe und nach 2 Jahren mein Geld verdoppelt hätte, echt ne' geile Bank.
Welchen Fehler gibt es beim "Hochrechnen"?
Ich rede hier vom Zinseszins, hatte diesen Begriff vergessen^^
1 Antwort
Dein Fehler ist, du den Zinsatz erst nach dem Potenzieren in Prozente rumrechnest.
Wir prüfen:
10^2 = 100
100 * 100 / 100 = 100
Richtig wäre:
10/100 = 0,1
1 + 0,1 = 1,1
1,1^2 = 1,21
100*1,21 = 121
KuarThePirat
22.11.2019, 20:50
@CGCofficial
Kapital2 = Convert.ToDouble(TxtEingabe1.Text);
Zinssatz2 = Convert.ToDouble(TxtEingabe2.Text);
double x = 1.0+Zinssatz2/100; // 1+Zinsatz/100
double y = Laufzeit;
double Hr1 = System.Math.Pow(x, y);
summe = Kapital2 * (Hr1-1); // Hier wollen wir nur die Zinsen berechnen
Wie übertrage ich das in den Code? (Bin Programmieranfänger)^^