计算以文本形式给出的数学表达式

本文关键字:表达式 文本 计算 | 更新日期: 2023-09-27 18:20:55

我正在尝试制作一个类似计算器的程序,在这个程序中,人们可以在文本框中输入一个计算结果,然后将该计算结果转换为int

string calcStr = textBox1.Text;
int result = calcStr;

有什么不太复杂的建议吗?

计算以文本形式给出的数学表达式

如果我理解问题的正确性,您希望能够从文本框中解析像1+3+4这样的表达式,并根据输入执行计算。这实际上是一项比人们想象的更艰巨的任务。

一种常见的解决方案是使用调车场算法来解析表达式。看见http://en.wikipedia.org/wiki/Shunting-yard_algorithm了解更多详细信息。

将NCalc用于此类工作。。。它是免费的,有源代码,可以完成所有繁重的工作(解析数学表达式等),并给出计算结果。

如果您试图简单地从字符串中解析出数字,请使用类似的函数

Int32.Parse(string)

如果你需要取出一个方程,比如"3+4/2"然后你需要每次提取一个字符,并确定它是什么。

就像绳子"32+4/12"您必须循环遍历字符串中的每个字符,并尝试将当前字符解析为数字。有一个函数可以测试它是否是一个数字。或者只是检查一下它的ascii值。

如果成功,取当前数字加上下一个数字,然后再试一次,直到碰到非数字字符为止。现在你可以提取你的数字了。非数字字符将根据您允许的数学运算符进行检查。任何其他操作都会引发错误。

一旦你能提取出整个方程,你可能需要做一些类似Stack运算的操作来评估它。我相信在我的Assembly类中,你会把一个buncha数和运算符推到堆栈中,然后从顶部弹出一个,由中间的运算符用下一个数评估上一个数。

我希望这就是你所说的。祝你好运!