void ParseInput(string input)
{
string dcmlSeparator = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
input = input.Replace(".", dcmlSeparator);
input = input.Replace(",", dcmlSeparator);
Match match = expression.Match(input);
double result = double.NaN;
if (match.Success)
{
double arg1 = double.Parse(match.Groups["arg1"].Value);
double arg2 = double.Parse(match.Groups["arg2"].Value);
string optr = match.Groups["operator"].Value;
string last = match.Groups["last"].Value;
// Addition
if (optr == "+")
result = arg1 + arg2;
// Subtraction
else if (optr == "-")
result = arg1 - arg2;
// Multiplication
else if (optr == "*" && last != "%")
result = arg1 * arg2;
// Division
else if (optr == @"/")
{
if (arg2 != 0) result = arg1 / arg2;
else if (arg1 > 0) result = double.PositiveInfinity;
else if (arg1 < 0) result = double.NegativeInfinity;
}
// Percent
else if (optr == "*" && last == "%")
{
result = arg1 * arg2 / 100;
last = "=";
}
// Power
else if (optr == "^")
result = Math.Pow(arg1, arg2);
if (Regex.IsMatch(last, @"[\+\-\*/\^]"))
last = " " + last + " ";
else
last = " ";
tbxInput.Clear();
tbxInput.AppendText(result.ToString() + last);
}
return;
}