działanie na liczbach rzeczywistych

0

hej.
tworząc kalkulator mam problem z działaniem na liczbach rzeczywistych.
Nie mogę dodać 2.2 + 3...
ma ktoś jakiś pomysł jak zmienić ten kod??

if (licznik.Text.Contains('+'))
                {
                    string[] split = licznik.Text.Split('+');
                    if (split[1] != "")
                    {
                        if (split[0].Contains('.') || split[1].Contains('.'))
                        {
                            float floatWyn = LiczenieFloatWynik("plus", float.Parse(split[0]), float.Parse(split[1]));
                          //  licznik.Text = Convert.ToString(floatWyn);
                            licznik.Text = Convert.ToString(floatWyn);
                        }
                        else
                        {
                            long rr = LiczenieIntegerWynik("plus", long.Parse(split[0]), long.Parse(split[1]));
                            licznik.Text = Convert.ToString(rr);
                        }
                    }
 
0

chyba się troche zle za to zabrałas, dlaczego sprawdzasz czy string zawiera kropke ?

nie latwiej zrobic cos takiego:
float liczba1 = float.Parse(liczba.Text);
float liczba2 = float.Parse(liczba2.Text);
float wynik = liczba1 + liczba2;
itp

i uzyj do tego switcha, aby wiedziec jakie dzialanie wykonac

0

ogólnie nic mi się nie pojawia :(
mam parsovanie, używam tablicy żeby wszystko na bieżaco było widać działania. Ktoś ma jeszcze jakiś pomysł?

0

Piszesz, że masz parser, czyli jak już to sparsujesz, potem jakaś funkcja eval to oblicza jak myślę, to nie lepiej przed rekurencyjmym nawrotem zrobić cast liścia do float i po problemie.

1

@cSharpKazik: TryParse zamiast Parse. Ten drugi rzuca wyjątkiem co jest bez sensu w przypadku programu typu kalkulator gdzie user może wpisać sobie w formatki co mu się podoba. Rzucanie za każdym razem wyjątku w takiej sytuacji jest kompletnie bez sensu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1