Witam, po przeanalizowaniu kodu nie wiem już czemu źle przelicza a mianowicie:
Chcę stworzyć kalkulator BMI w C#, tak samo tworzyłem w starym programie C++ Builder i to co jest w komentarzu tak było w C++ B ale bez Convert.To Double.
Na dwa sposoby to robiłem ale źle liczy. A o to kod który jest pod przyciskiem oblicz (button1).
private void button1_Click(object sender, EventArgs e)
{
//double wynik, mkg, wcm, t_mkg, w_wcm;
//t_mkg = Convert.ToDouble(mkg.Text);
//w_wcm = Convert.ToDouble(wcm.Text);
//wynik = mkg / (wcm * 100 / wcm * 100);
wynik.Text = (float.Parse(mkg.Text)/(float.Parse(mkg.Text)*100 / float.Parse(wcm.Text))).ToString("0.00000"); // tu chcę mieć ilość cyfr po przecinku, bez tego też źle liczy
}
Czemu źle przelicza? Widziałem na youtube jak ktoś robi podobnie jak jest w komentarzu i nie działa. Pola tekstowe w oknie Form1 noszą nazwę mkg, wcm, trzecie pole co daje wynik to nazwa wynik.
Zamiast wszystko upychać w jednej linii, z masą nawiasów i nic nie mówiącymi nazwami, rozbiłbyś to na zmienne - od razu widziałbyś, że zgubiłeś “* 100” przy float.Parse(wcm.Text) i drugie(licząc od lewej) float.Parse parsuje masę, nie wzrost.
Tak swoją drogą, to ten wzór, jeśli czytać go zgodnie z zasadami matematyki, nie liczy BMI, tylko zamienia kilogramy na setki miligramów(wcm się skraca, zostaje mkg / 10000).
double mass = double.Parse(mkg.Text); //Masa w kgdouble height = double.Parse(wcm.Text) / 100.0; //Wzrost w metrach, przy założeniu, że wcm to wzrost w centymetrach.double wynik = mass / height / height;[/code]
No tak, ale jak pisałem zgodnie ze wzorem to nie wychodziły mi wyniki jak w innych kalkulatorach BMI, które są w necie a są dostępne online. Sprawdziłem ten kod, nie ma błędów ale też nie pojawia się wynik w polu wynik.
I mass oraz height to zmienne z mojego kodu? Odsyłam do pierwszego lepszego kursu C#(hint: zmienne typu double nie mają właściwości/pola Text i nie są też TextBoxami tak jak Ci się może wydawać - to już są sparsowane wartości z tych pól tekstowych).
Jeśli chcesz wyświetlić z daną dokładnością, to możesz podać format do metody ToString - np. tak, jak zrobiłeś to w pierwszym poście. Pamiętaj tylko, że double ma ograniczoną precyzję i nie zawsze dostaniesz idealny wynik.
Hint: błąd błędowi nierówny. Zawsze kiedy takowy zgłaszasz / prosisz o pomoc, załącz komunikat albo chociaż wyraźnie napisz, czego dotyczy. “< jako błąd” zbyt konkretne nie jest.