文本框没有计算正确的方式

本文关键字:方式 计算 文本 | 更新日期: 2023-09-27 18:10:09

我有一个Windows应用程序链接到一个数据库。当这个文本框的文本发生变化时,它应该从文本框中计算一些值。我写了,所有的都很好,除了一个。如果textBox2中的文本小于20,它计算正确,如果大于20,它计算不正确,我甚至可以知道为什么会这样。到目前为止已经两天了,我一直在试图解决这个问题,但一无所获。有人能拿到吗?

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.RoundMidPointRoundingAwayFromZero