请给出 计算表达式 (4+5.0)/ 4.2 * (3+5.3)
using System;
using System.Collections.Generic;public class ExpressionEvaluator
{public static double Evaluate(string expression){var operands = new Stack<double>();var operators = new Stack<char>();for (int i = 0; i < expression.Length; i++){char ch = expression[i];if (ch == ' ')continue;if (ch == '('){operators.Push(ch);}else if (char.IsDigit(ch) || ch == '.'){string operand = ch.ToString();while (i + 1 < expression.Length && (char.IsDigit(expression[i + 1]) || expression[i + 1] == '.')){operand += expression[i + 1];i++;}operands.Push(double.Parse(operand));}else if (ch == ')'){while (operators.Peek() != '('){ProcessOperator(operands, operators);}operators.Pop(); // Remove '('}else{while (operators.Count > 0 && Precedence(operators.Peek()) >= Precedence(ch)){ProcessOperator(operands, operators);}operators.Push(ch);}}while (operators.Count > 0){ProcessOperator(operands, operators);}return operands.Pop();}private static int Precedence(char op){if (op == '+' || op == '-')return 1;if (op == '*' || op == '/')return 2;return 0;}private static void ProcessOperator(Stack<double> operands, Stack<char> operators){char op = operators.Pop();double operand2 = operands.Pop();double operand1 = operands.Pop();double result = ApplyOperator(op, operand1, operand2);operands.Push(result);}private static double ApplyOperator(char op, double operand1, double operand2){switch (op){case '+':return operand1 + operand2;case '-':return operand1 - operand2;case '*':return operand1 * operand2;case '/':if (operand2 == 0)throw new DivideByZeroException("Division by zero");return operand1 / operand2;default:throw new ArgumentException("Invalid operator");}}public static void Main(string[] args){string expression = "(4+5.0)/4.2*(3+5.3)";double result = Evaluate(expression);Console.WriteLine($"Result of expression {expression} is {result}");}
}