using Jace;
|
using System;
|
using System.Collections.Generic;
|
|
public static class JaceCalculator
|
{
|
private static readonly CalculationEngine Engine = new CalculationEngine();
|
|
/// <summary>
|
/// 解析并计算数学表达式
|
/// </summary>
|
/// <param name="formula">数学表达式字符串</param>
|
/// <param name="variables">变量字典</param>
|
/// <returns>计算结果</returns>
|
public static double Calculate(string formula, Dictionary<string, double> variables)
|
{
|
if (string.IsNullOrEmpty(formula))
|
{
|
throw new ArgumentException("Formula cannot be null or empty.");
|
}
|
|
if (variables == null || variables.Count == 0)
|
{
|
throw new ArgumentException("Variables dictionary cannot be null or empty.");
|
}
|
|
try
|
{
|
return Engine.Calculate(formula, variables);
|
}
|
catch (Exception ex)
|
{
|
throw new InvalidOperationException($"Failed to calculate formula: {ex.Message}", ex);
|
}
|
}
|
|
public static void Init()
|
{
|
Engine.AddFunction("int", (Func<double, double>)(x => (int)x));
|
}
|
}
|