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
Jak to zamienia? Podaj kod tej konwersji.
Jak wyżej. Podaj też kod przypisania tego 0 do zmiennej.
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
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");
}
}
Czy przypadkiem nie masz textBox2_TextChanged(object sender, EventArgs e)
w którym to wyliczasz i zmieniasz wartość: textBox1.Text = ...
?
tak jest, ale one na podobnej zasadzie działają co textbox1
tu: textBox2.Text = System.Convert.ToString(y);
wywołujesz: textBox2_TextChanged(object sender, EventArgs e)
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;
nadal wyświetla to: -5.52644350035633E-14 w textbox1 zaraz po wprowadzeniu w textbox1 wartosci 0 :(
Pokaż kod wszystkich trzech zdarzeń.
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");
}
}
textBox2.TextChanged -= textBox2_TextChanged; // tu -= w pozostałych miejscach tak samo
textBox2.Text = System.Convert.ToString(y);
textBox2.TextChanged += textBox2_TextChanged;
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
- Oblicz o ile procent komputer się "pomylił"
- Poczytaj o błędach obliczeń zmiennoprzecinkowych.
Zaokrąglij wynik do dwóch miejsc po przecinku
@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.