Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串计算转换为十进制答案_C#_Calculator - Fatal编程技术网

C# 将字符串计算转换为十进制答案

C# 将字符串计算转换为十进制答案,c#,calculator,C#,Calculator,我正在编写一个计算器,其中的按钮向文本框发送一个字符。当用户按下equals按钮时,必须计算整个字符串,并且答案必须显示为十进制。显然,以下方法不起作用: private void btn_enter_Click(object sender, EventArgs e) { decimal answer; answer = Convert.ToDecimal(textBox1.Text); textBox1.Text += "="

我正在编写一个计算器,其中的按钮向文本框发送一个字符。当用户按下equals按钮时,必须计算整个字符串,并且答案必须显示为十进制。显然,以下方法不起作用:

    private void btn_enter_Click(object sender, EventArgs e)
    {
        decimal answer;
        answer = Convert.ToDecimal(textBox1.Text);

        textBox1.Text += "=" + answer;
    }

让这样的东西起作用的最好方法是什么?

尽管你的问题不清楚。但是如果你想在文本框中显示,你应该把它转换成字符串

private void btn_enter_Click(object sender, EventArgs e)
{
    decimal answer;
    answer = Convert.ToDecimal(textBox1.Text);

    textBox1.Text += "=" + answer.toString();
}

你可以按照你的想法去做,但是对于你想做的事情来说,这有点过头了

我推荐一个计算引擎,就像你能做的那样。有了它,您可以轻松地从NCalc主页执行以下操作:

Expression e = new Expression("2 + 3 * 5");
Debug.Assert(17 == e.Evaluate());
您可以将Expression类的构造函数替换为TextBox中的文本,然后将调用的结果通过管道传递到要将其输出到的任何位置:

Expression e = new Expression(textBox1.Text);
MessageBox.Show(e.Evaluate().ToString());

必须计算整个字符串的含义是什么?字符串的内容是什么?你能提供一个具体不起作用的样本吗?转换,输出文本?您在textbox1中键入了什么?textbox1.Text只是一个像“100”这样的值吗?或者它实际上是一个像“100+4*12”这样的整体计算。如果是后者,那么您首先必须解析字符串来计算每个计算。或者,也许更可取的是,更早地抓取输入,这样当用户键入“100”,然后单击“+”时,您可以拉入“100”,将其转换为十进制,并存储即将发生的加法。我猜他正在文本框中构建一个表达式,如1+2-3,当用户键入=他希望对其求值时。OP?也许您可以在数学表达式解析器中找到一个很好的起点。