C# 将字符串计算转换为十进制答案
我正在编写一个计算器,其中的按钮向文本框发送一个字符。当用户按下equals按钮时,必须计算整个字符串,并且答案必须显示为十进制。显然,以下方法不起作用:C# 将字符串计算转换为十进制答案,c#,calculator,C#,Calculator,我正在编写一个计算器,其中的按钮向文本框发送一个字符。当用户按下equals按钮时,必须计算整个字符串,并且答案必须显示为十进制。显然,以下方法不起作用: private void btn_enter_Click(object sender, EventArgs e) { decimal answer; answer = Convert.ToDecimal(textBox1.Text); textBox1.Text += "="
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?也许您可以在数学表达式解析器中找到一个很好的起点。