C#计算器不适用于不同的加数

时间:2014-05-12 02:24:19

标签: c# calculator

我正在用C#开发一个计算器,除了我添加数字这个事实,只有加数是相同的数字(例如9 + 9 = 18,6 + 9)这个事实我已经相当远了= 12)。所以我很困惑。有人会帮帮我吗?

private void button5_Click(object sender, EventArgs e)
{
    b = false;
    number = decimal.Parse(richTextBox1.Text);
    richTextBox1.Text = number + " + ";
    number2 = decimal.Parse(richTextBox1.Text);
    addReady = true;
}

private void button17_Click(object sender, EventArgs e)
{
    if (addReady == true)
    {
        answer = number + number2;
        richTextBox1.Text = Convert.ToString(answer);
        b = true;
    }
}

另外,当我把它放入时,我的正/负按钮突然开始出现故障,将所有内容转换为0.这是怎么回事?

decimal neg;
neg = number * 2;
number = number - neg;
richTextBox1.Text = Convert.ToString(number);

1 个答案:

答案 0 :(得分:3)

好的。您要做的是从行中的文本框中解析string两次。所以,两次你都会获得完全相同的数字。它不会以你编写它的方式循​​环。最重要的是,你没有提取表达式。为了让您的生活更轻松,我建议使用Calculator.NET第三方库。它解析数学表达式:

http://weblogs.asp.net/pwelter34/archive/2007/05/05/calculator-net-calculator-that-evaluates-math-expressions.aspx

然后是NCalc(就像Calculator.NET一样,这个库的使用简单得令人难以置信):

http://ncalc.codeplex.com/

您也可以利用Microsoft脚本控制,如以下答案所示:

https://stackoverflow.com/a/392355/2006048

万一链接不起作用我会在这里复制代码进行演示(所有信用都归原始海报):

MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
sc.Language = "VBScript";
string expression = "1 + 2 * 7";
object result = sc.Eval(expression);            
MessageBox.Show(result.ToString());