Zmienna double i wyświetlanie jakichś śmieci

0

napotkałem na dziwny problem otóż kiedy wprowadzę do textboxa wartość 0 to on tą wartość 0 zamienia na taki oto ciąg liczb: -5.52644350035633E-14 jak zrobić żeby nie zostały wyświetlane te śmieci w danym polu tekstowym a pokazywał wartość 0

1

Jak to zamienia? Podaj kod tej konwersji.

0

Jak wyżej. Podaj też kod przypisania tego 0 do zmiennej.

1

to jest format naukowy liczby i z reguły jest najbardziej czytelny dla osób, które wykonują jakieś obliczenia. Musisz zmienić format wyświetlania liczby. Nie podałeś języka programowania także ciężko tutaj konkretem zarzucić. U ciebie wygląda jakbyś nie do końca zero miał tylko coś na zasadzie:
liczba = 10/100 + 0.3 -0.2 - 0.1 (w jakiejś pętli na przykład). Ta liczba to jest w przybliżeniu 0, ale nie dokładnie ze względu na błędy obliczeniowe

0

język C#, wpisuję w textbox1 0 i wyświetla mi zaraz w nim to: -5.52644350035633E-14

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string w1, w2, w3;
            w1 = textBox1.Text;
            w2 = textBox2.Text;
            w3 = textBox3.Text;
            double x, y, z;
           
            try
            {
                x = double.Parse(textBox1.Text);
                x = System.Convert.ToDouble(w1);

                y = x * 9 / 5 + 32;
                z = x + 273.15;

                textBox2.Text = System.Convert.ToString(y);
                textBox3.Text = System.Convert.ToString(z);
            }
            catch
            {
                MessageBox.Show("to nie jest liczba");
            }
        }
1

Czy przypadkiem nie masz textBox2_TextChanged(object sender, EventArgs e) w którym to wyliczasz i zmieniasz wartość: textBox1.Text = ... ?

0

tak jest, ale one na podobnej zasadzie działają co textbox1

0

tu: textBox2.Text = System.Convert.ToString(y); wywołujesz: textBox2_TextChanged(object sender, EventArgs e)

1

to w trakcie jak zmieniasz w zdarzeniu 1 textbox2 to wywoujesz też zdarzenie textbox2.
Najprostsze rozwiązanie:
W każdym kolidującym zdarzeniu daj coś takiego na początku:

textBox1.TextChanged -= textBox1_TextChanged;
textBox2.TextChanged -= textBox2_TextChanged;
textBox3.TextChanged -= textBox3_TextChanged;

i na końcu daj:

textBox1.TextChanged += textBox1_TextChanged;
textBox2.TextChanged += textBox2_TextChanged;
textBox3.TextChanged += textBox3_TextChanged;
0

nadal wyświetla to: -5.52644350035633E-14 w textbox1 zaraz po wprowadzeniu w textbox1 wartosci 0 :(

0

Pokaż kod wszystkich trzech zdarzeń.

0
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string w1, w2, w3;
            w1 = textBox1.Text;
            w2 = textBox2.Text;
            w3 = textBox3.Text;
            double x, y, z;
           
            try
            {
                x = double.Parse(textBox1.Text);
                x = System.Convert.ToDouble(w1);

                y = x * 9 / 5 + 32;
                z = x + 273.15;

                textBox2.TextChanged += textBox2_TextChanged;
                   textBox2.Text = System.Convert.ToString(y);
                textBox2.TextChanged += textBox2_TextChanged;

                textBox3.TextChanged += textBox3_TextChanged;
                   textBox3.Text = System.Convert.ToString(z);
                textBox3.TextChanged += textBox3_TextChanged;
            }
            catch
            {
                MessageBox.Show("to nie jest liczba");
            }
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {           
            string w1, w2, w3;
            w1 = textBox1.Text;
            w2 = textBox2.Text;
            w3 = textBox3.Text;
            double x, y, z;

            try
            {
                y = double.Parse(textBox2.Text);
                y = System.Convert.ToDouble(w2);

                x = (y - 32) * 5 / 9;
                z = (y + 459.67) * 5 / 9;

                textBox1.TextChanged += textBox1_TextChanged;
                   textBox1.Text = System.Convert.ToString(x);
                textBox1.TextChanged += textBox1_TextChanged;

                textBox3.TextChanged += textBox3_TextChanged;
                   textBox3.Text = System.Convert.ToString(z);
                textBox3.TextChanged += textBox3_TextChanged;
            }
            catch
            {
                MessageBox.Show("to nie jest liczba");
            }

        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {  
            string w1, w2, w3;
            w1 = textBox1.Text;
            w2 = textBox2.Text;
            w3 = textBox3.Text;
            double x, y, z;

            try
            {
                z = double.Parse(textBox3.Text);
                z = System.Convert.ToDouble(w3);

                x = z - 273.15;
                y = (z * 9 / 5) - 459.67;

                textBox1.TextChanged += textBox1_TextChanged;
                   textBox1.Text = System.Convert.ToString(x);
                textBox1.TextChanged += textBox1_TextChanged;

                textBox2.TextChanged += textBox2_TextChanged;
                   textBox2.Text = System.Convert.ToString(y);
                textBox2.TextChanged += textBox2_TextChanged;
            }
            catch
            {
                MessageBox.Show("to nie jest liczba");
            }

        }
0
                textBox2.TextChanged -= textBox2_TextChanged; // tu -= w pozostałych miejscach tak samo
                   textBox2.Text = System.Convert.ToString(y);
                textBox2.TextChanged += textBox2_TextChanged;
0

zmieniłem i pierwszi drugi textbox działa prawidłowo ale jak wstawię wartość 273,15 w textbox3 to nie dokończa dobry mi daje wynik w textbox2 wyświela mi wartość: 31,9999999999999 zamiast 32

0
  1. Oblicz o ile procent komputer się "pomylił"
  2. Poczytaj o błędach obliczeń zmiennoprzecinkowych.
1

Zaokrąglij wynik do dwóch miejsc po przecinku

1

@xczxxx, zacznij od tego: http://osilek.mimuw.edu.pl/index.php?title=WDP_Reprezentacja_liczb
Jak to przeczytasz i zrozumiesz, to spróbujemy pomóc Ci z kodem w C#, o ile jeszcze będziesz potrzebował pomocy.

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