Kalkulator - Liczby po przecinku

0

Witam, mam problem z liczbami po przecinku i wykonywaniem operacji w kalkulatorze. Nie wiem jak skonwertować liczbę z przecinkiem aby móc wykonać na niej działania. Pozdrawiam

private void bPrzecinek_Click(object sender, EventArgs e)
        {
            tbWynik.Text = tbWynik.Text + ",";
            tbWynik.Text = Convert.ToDouble(tbWynik.Text); // Tu wywala błąd :<
        }
        private void bPlus_Click(object sender, EventArgs e)
        {
            FirstNumber = Convert.ToDouble(tbWynik.Text);
            tbWynik.Text = "0";
            Operation = "+";
        }
        private void bMinus_Click(object sender, EventArgs e)
        {
            FirstNumber = Convert.ToDouble(tbWynik.Text);
            tbWynik.Text = "0";
            Operation = "-";
        }

        private void bRazy_Click(object sender, EventArgs e)
        {
            FirstNumber = Convert.ToDouble(tbWynik.Text);
            tbWynik.Text = "0";
            Operation = "*";
        }

        private void bPodzielic_Click(object sender, EventArgs e)
        {
            FirstNumber = Convert.ToDouble(tbWynik.Text);
            tbWynik.Text = "0";
            Operation = "/";
        }

        private void bWynik_Click(object sender, EventArgs e)
        {
            double SecondNumber;
            double Result;

            SecondNumber = Convert.ToDouble(tbWynik.Text);

            if (Operation == "+")
            {
                Result = (FirstNumber + SecondNumber);
                tbWynik.Text = Convert.ToString(Result);
                FirstNumber = Result;
            }
            if (Operation == "-")
            {
                Result = (FirstNumber - SecondNumber);
                tbWynik.Text = Convert.ToString(Result);
                FirstNumber = Result;
            }
            if (Operation == "*")
            {
                Result = (FirstNumber * SecondNumber);
                tbWynik.Text = Convert.ToString(Result);
                FirstNumber = Result;
            }
            if (Operation == "/")
            {
                Result = (FirstNumber / SecondNumber);
                tbWynik.Text = Convert.ToString(Result);
                FirstNumber = Result;
            }
        }
3

Użytkownikowi wyświetlasz stringa, konwersja na doubla powinna się odbywać dopiero przy obliczaniu.

Wywala bład bo coś takiego "123**,**" chcesz zamienić na doubla (a potem przypisujesz to do .Text więc i tak znowu zamieniasz na stringa), więc w tej metodzie dodawania przecinka wywal tą konwersje.

1

Ewentualnie jeżeli faktycznie podajesz dobry string typu "12,5", to może musisz jakiś inny CultureInfo podać w tym ToDouble.

1

Pobierasz tekst i zamieniasz na liczbę . Tak samo na konsoli czy w okienkach .

using System;


namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            double liczba;
            Console.Write("Podaj liczbę : ");
            if (!double.TryParse(Console.ReadLine(), out liczba))  throw new Exception("Nieprawdidłwa liczba");
            Console.WriteLine(liczba);
        } 
    }
}


0

Dziękuję wam za pomoc. Wszystko już działa :)

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