计算器数学错误

Calculator Mathematical Error

我正在使用 Dijkstra's Two-stack Calculator 和 Unity 引擎。 我遇到数学错误。

输入:"3+2",输出:5

但是

输入:"30+20",输出:2

这段代码有什么问题?

代码

using System.Collections.Generic;
public class Calculator
{
    public float Evaluate(string Input)
    {
        string Expression = "(" + Input + ")";
        Stack<string> ops = new Stack<string>();
        Stack<float> vals = new Stack<float>();
        for (int i = 0; i < Expression.Length; i++)
        {
            string s = Expression.Substring(i, 1);
            if (s.Equals("(")) { }
            else if (s.Equals("+")) ops.Push(s);
            else if (s.Equals("-")) ops.Push(s);
            else if (s.Equals("*")) ops.Push(s);
            else if (s.Equals("/")) ops.Push(s);
            else if (s.Equals(")"))
            {
                int count = ops.Count;
                while (count > 0)
                {
                    string op = ops.Pop();
                    float v = vals.Pop();
                    if (op.Equals("+")) v = vals.Pop() + v;
                    else if (op.Equals("-")) v = vals.Pop() - v;
                    else if (op.Equals("*")) v = vals.Pop() * v;
                    else if (op.Equals("/")) v = vals.Pop() / v;
                    vals.Push(v);
                    count--;
                }
            }
            else vals.Push(float.Parse(s));
        }
        return vals.Pop();
    }
}
else vals.Push(float.Parse(s));

这一行一次只考虑个位数。

运行 通过您的代码: 输入 = (30+20)

我=0
(
值堆栈:
操作堆栈:

我=1
3
堆栈值:3
操作堆栈:

我=2
0
堆栈值:0、3
操作堆栈:

我=3
+
堆栈值:0、3
操作栈:+

我=4
2
堆栈值:2、0、3
操作栈:+

我=5
0
堆栈值:0、2、0、3
操作栈:+

我=6
)
堆栈值:0, 2, 0, 3
操作栈:+

完成后,弹出 0 和 2 并将它们相加以获得最终答案:2