С# простое вычисление

Привет, я делаю простой пример вычисления С# Label1.Text = textBox1.Text + textbox2.Text У меня проблема, когда я пытаюсь ввести 88,5 или 80,3 и вычислить, что моя программа продолжает сбой, получая ошибки. Я уже преобразовал текст в Int и вот мой код:

 int i;
 i = Convert.ToInt32(textBox1.Text) + Convert.ToInt32(textBox2.Text);
 Label1.Text= i.ToString();

Но это работает, если я вставляю 88 и 80. Я знаю, что что-то пропустил. Кто-нибудь может мне помочь? Спасибо


person Jay    schedule 11.11.2012    source источник


Ответы (1)


Вы пытаетесь преобразовать "88,5" в целое число. Это не целое число, не так ли?

Я предлагаю вам вместо этого использовать decimal - и использовать TryParse, чтобы вы могли обрабатывать неверный пользовательский ввод, не прибегая к исключениям.

decimal input1, input2;
if (decimal.TryParse(textBox1.Text, out input1) &&
    decimal.TryParse(textBox1.Text, out input2))
{
    Label1.Text = (input1 + input2).ToString();
}
else
{
    Label1.Text = "Invalid input";
}
person Jon Skeet    schedule 11.11.2012
comment
Спасибо, сэр @Jon. Это работает!! - person Jay; 11.11.2012
comment
@Jay: Но понимаете ли вы, почему это работает, и проблемы вашего исходного кода? - person Jon Skeet; 11.11.2012
comment
да, сэр. Потому что я использую только целые числа, а не десятичные числа. - person Jay; 11.11.2012
comment
@JonSkeet Сэр, что, если я хочу умножить output1 на .20 - person Jay; 11.11.2012
comment
@Jay: И не забудьте использовать TryParse ;) - person Tom Sarduy; 11.11.2012
comment
@JonSkeet, сэр, я использую этот десятичный код: ans = (output1 * .20) + (output2 * .20); но я получаю сообщение об ошибке. - person Jay; 11.11.2012
comment
@Jay: я получаю сообщение об ошибке никогда недостаточно информации. Какая ошибка? Во время компиляции или во время выполнения? Вы понимаете, почему вы получаете ошибку? - person Jon Skeet; 11.11.2012