算術表達式求值是經典問題。本實作參考 IBM developerWorks 文章「快速精確的數學表達式求值」(Java 版),以 C# 重寫並擴充。核心演算法為逆波蘭表示法(RPN,後綴表示法)。
namespace XIYV.Compute
{
public sealed class SimpleRPN
{
private SimpleRPN() { }
// 中綴轉後綴(RPN)
private static string BuildingRPN(string s) { ... }
// 計算 RPN 表達式
public static string ComputeRPN(string s) { ... }
// 運算子優先級
private static int Power(char opr) { ... }
// 格式化空白
private static string FormatSpace(string s) { ... }
}
}
-(3+5))轉為單目運算子 !,避免與減號混淆。!)、二元(+ - * / % ^)運算。-(3+5) 類表達式,本實作透過負號預處理解決此問題。支援複雜巢狀運算、負數、小數、多層括號等表達式,如:
(6+9-8+5-8)*(2+5+8)/7+5
1+2+3+4+5+6+7+8+9
(6+9-8+5-8)*(2+5+8)
完整代碼較長,核心邏輯已在 BuildingRPN、ComputeRPN、Power 三方法中實現。