Я получаю неправильные расчеты на процент скидки при использовании 10% и выше. 1-9% получают точный ответ - PullRequest
1 голос
/ 13 июня 2019

Я получаю неверные расчеты для процента скидки при использовании 10% и выше . 1-9% получает точный ответ

private void textBox6_TextChanged(object sender, EventArgs e)
{
    try
    {
        // if (string.IsNullOrEmpty(txtTaxPer.Text))
        if (string.IsNullOrEmpty(textBox6.Text))
        {
            //txtTaxAmt.Text = "";
            textBox7.Text = "";
            txtTotal.Text = "";
            return;
        }

        textBox7.Text = 
          Convert.ToDecimal(Convert.ToDecimal(txtTotal.Text) / 
          100 * 
          Convert.ToDecimal(textBox6.Text))
         .ToString("0.00");

        txtTotal.Text = 
          (Convert.ToDecimal(txtTotal.Text) - Convert.ToDecimal (textBox7.Text))
         .ToString("0.00");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

1 Ответ

2 голосов
/ 13 июня 2019

Пожалуйста, обратите внимание, что когда вы кладете, скажем 15 в textBox6.Text, у вас есть textBox6_TextChanged, называемый , дважды , один раз для 1 и затем для 15.Предположим, у нас есть txtTotal.Text == "1000.00".Затем мы начинаем вводить 15: когда мы помещаем 1 в textBox6.Text, мы имеем 1% от начального 1000.00:

 txtTotal.Text = 990.00    

тогда, когда мы помещаем 5 и, таким образом, имеем15% из ранее вычисленных 990.00

 txtTotal.Text = 841.50

Когда правильный результат (вычисление 15% из 1000.00) равен

 txtTotal.Text = 850.00

Я предлагаю два текстовые поля, скажем txtTotal.Text и txtTotalWithDiscount.Text

private void textBox6_TextChanged(object sender, EventArgs e) {
  if (decimal.TryParse(txtTotal.Text, out decimal total) &&
      decimal.TryParse(textBox6.Text, out decimal percent)) {
    decimal discount = total / 100m * percent;

    textBox7.Text = (discount).ToString("0.00");
    txtTotalWithDiscount.Text = (total - discount).ToString("0.00");
  }
  else {
    //TODO: if txtTotal.Text or textBox6.Text is of invalid format
    // Or txtTotalWithDiscount.Text = txtTotal.Text;
    txtTotalWithDiscount.Text = "?";
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...