c# bmi rechner mit absoluter zahl korrektes Ergebnis, mit Variable falsch warum?
Habe folgendes Problem, das hier ist der aus dem Code entscheidende Tei.. ich habe auch mal Schritt für Schritt alles durchlaufen lassen um alles nachzuvollziehen, komme aber immer noch nicht weiter.
Folgende Werte werden eingegeben, wie in dem Kommentar teil beschrieben:
Größe = 150cm
Gewicht = 45kg somit käme genau ein bmi von 20 raus da 1,5³ = 2,25 und 45 / 2,25 = 20
allerdings erscheint im textlabel 3 also der Ausgabezelle nach dem Klick auf den Button immer genau der Wert, den ich in das Gewichtsfeld eingetragen habe.
Wenn ich jedoch ((groesse / 100) * (groesse / 100)) durch 2.25 mal zu testzwecken manuell ersetze kommt das korrekte Ergebnis von 20 raus.
ich habe es auch schon mit zwischenschritten probiert. (groesse erst im meter umrechen, dann schon quadrieren und in der Ergebnisformal habe ich dann genauso wie bei dem Zahlenwert 2.25 nur eben als Variablenwert stehen, wie man es noch an den Variablen Deklarationen erkennen kann.
private void button2_Click(object sender, EventArgs e)
{
int groesse;
double groessem;
double groessequadrat;
double gewicht;
double bmi;
groesse = int.Parse(textBox1.Text);
gewicht = double.Parse(textBox2.Text);
bmi = gewicht / ((groesse / 100) * (groesse / 100)); //20bmi = 45kg / ((150cm / 100) * (150cm / 100)) = [warum 45]
label3.Text = bmi.ToString();
}
hat jemand eine Idee, war hier der Fehler sein könnte?
1 Antwort
Ich würd die Variable groesse entweder auch als double parsen oder mal (groesse / 100.0) rechnen. Es könnte sein, dass er sowohl groesse als auch 100 als int interpretiert und dann 150 / 100 = 1 ausrechnet. Und anschließend gewicht / 1.
Ob deine Variablennamen auf deutsch, englisch oder klingonisch sind, ist deine Sache... ich vermute mal, dass du das nicht professionell machst, sondern dass es um eine Schulaufgabe geht.
du genie, hab erst darüber nachgedacht, aber hab irgendwie nicht dran geglaubt und dann ist es doch der dämliche Fehler ... :-( aber danke wenigstens sinnvoller Rad anstatt sich über die Sprache der Variablen zu streiten.