TextBox 计算不正确
TextBox not calculating the right way
我有一个 Windows 用于链接到数据库的应用程序。当此文本框的文本更改时,它应该从文本框计算一些值。我写了,它工作正常,所有这些,除了一个。如果 textBox2 中的文本小于 20,则计算正确,如果大于 20,则计算不正确,我什至不知道为什么会这样。到目前为止,我已经尝试解决了 2 天,但一无所获。任何人都可以得到它吗?
private void textBox1_TextChanged_1(object sender, EventArgs e)
{
int total = textBox1.Text.Length == 0 ? 0 : int.Parse(textBox1.Text);
textBox2.Text = total.ToString();
textBox7.Text = (total * 8).ToString();
}
private void textBox7_TextChanged_1(object sender, EventArgs e)
{
int ore_l = textBox7.Text == "" ? 0 : int.Parse(textBox7.Text);
int ore_n = textBox8.Text == "" ? 0 : int.Parse(textBox8.Text);
int t = ((ore_l - ore_n) / 8);
textBox2.Text = t.ToString();
}
private void textBox8_TextChanged_1(object sender, EventArgs e)
{
//it is correct
int ore_l = textBox7.Text == "" ? 0 : int.Parse(textBox7.Text);
int ore_n = textBox8.Text == "" ? 0 : int.Parse(textBox8.Text);
int t = ((ore_l - ore_n) / 8);
textBox2.Text = t.ToString();
//it isn't correct anymore
int ac = label14.Text.Trim() == "" ? 0 : int.Parse(label14.Text);
int zi_l = textBox1.Text.Trim() == "" ? 0 : int.Parse(textBox1.Text);
int zi_luc = textBox2.Text.Trim() == "" ? 0 : int.Parse(textBox2.Text);
int total = ac / zi_l * zi_luc;
textBox6.Text = total.ToString();
}
private void textBox6_TextChanged_1(object sender, EventArgs e)
{
int s = textBox4.Text == "" ? 0 : int.Parse(textBox4.Text);
int ac = label14.Text == "" ? 0 : int.Parse(label14.Text);
textBox5.Text = (ac + s).ToString();
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
int b = label21.Text == "" ? 0 : int.Parse(label21.Text);
int sa = textBox1.Text == "" ? 0 : int.Parse(textBox1.Text);
int t = (b / sa + (75 / 100 * b / sa));
textBox10.Text = t.ToString();
int s = textBox4.Text == "" ? 0 : int.Parse(textBox4.Text);
int ac = label14.Text == "" ? 0 : int.Parse(label14.Text);
textBox5.Text = (ac + s).ToString();
}
用这个值测试它:ac = 1400 ; zi_l = 23 ; zi_luc = 23。所以:1400/23*23。它应该是 1400,因为它是 int,而实际上它显示的是 1380。
P.S:这不是因为文本发生变化而导致值错误。我分别尝试了一个按钮和 onClick 方法,结果是一样的。谢谢!
1400 除以 23 得到 60.8xxxxxxxxxxx。
因为1400是整数,小数点后的数字被去掉了。那么计算就是60 * 23 = 1380.
如果您想要更好的计算,您需要使用浮点数,然后使用 Math.Round
和 MidPointRoundingAwayFromZero
。
我有一个 Windows 用于链接到数据库的应用程序。当此文本框的文本更改时,它应该从文本框计算一些值。我写了,它工作正常,所有这些,除了一个。如果 textBox2 中的文本小于 20,则计算正确,如果大于 20,则计算不正确,我什至不知道为什么会这样。到目前为止,我已经尝试解决了 2 天,但一无所获。任何人都可以得到它吗?
private void textBox1_TextChanged_1(object sender, EventArgs e)
{
int total = textBox1.Text.Length == 0 ? 0 : int.Parse(textBox1.Text);
textBox2.Text = total.ToString();
textBox7.Text = (total * 8).ToString();
}
private void textBox7_TextChanged_1(object sender, EventArgs e)
{
int ore_l = textBox7.Text == "" ? 0 : int.Parse(textBox7.Text);
int ore_n = textBox8.Text == "" ? 0 : int.Parse(textBox8.Text);
int t = ((ore_l - ore_n) / 8);
textBox2.Text = t.ToString();
}
private void textBox8_TextChanged_1(object sender, EventArgs e)
{
//it is correct
int ore_l = textBox7.Text == "" ? 0 : int.Parse(textBox7.Text);
int ore_n = textBox8.Text == "" ? 0 : int.Parse(textBox8.Text);
int t = ((ore_l - ore_n) / 8);
textBox2.Text = t.ToString();
//it isn't correct anymore
int ac = label14.Text.Trim() == "" ? 0 : int.Parse(label14.Text);
int zi_l = textBox1.Text.Trim() == "" ? 0 : int.Parse(textBox1.Text);
int zi_luc = textBox2.Text.Trim() == "" ? 0 : int.Parse(textBox2.Text);
int total = ac / zi_l * zi_luc;
textBox6.Text = total.ToString();
}
private void textBox6_TextChanged_1(object sender, EventArgs e)
{
int s = textBox4.Text == "" ? 0 : int.Parse(textBox4.Text);
int ac = label14.Text == "" ? 0 : int.Parse(label14.Text);
textBox5.Text = (ac + s).ToString();
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
int b = label21.Text == "" ? 0 : int.Parse(label21.Text);
int sa = textBox1.Text == "" ? 0 : int.Parse(textBox1.Text);
int t = (b / sa + (75 / 100 * b / sa));
textBox10.Text = t.ToString();
int s = textBox4.Text == "" ? 0 : int.Parse(textBox4.Text);
int ac = label14.Text == "" ? 0 : int.Parse(label14.Text);
textBox5.Text = (ac + s).ToString();
}
用这个值测试它:ac = 1400 ; zi_l = 23 ; zi_luc = 23。所以:1400/23*23。它应该是 1400,因为它是 int,而实际上它显示的是 1380。
P.S:这不是因为文本发生变化而导致值错误。我分别尝试了一个按钮和 onClick 方法,结果是一样的。谢谢!
1400 除以 23 得到 60.8xxxxxxxxxxx。
因为1400是整数,小数点后的数字被去掉了。那么计算就是60 * 23 = 1380.
如果您想要更好的计算,您需要使用浮点数,然后使用 Math.Round
和 MidPointRoundingAwayFromZero
。