package com.hzy.common.utils;

import org.apache.commons.jexl2.Expression;
import org.apache.commons.jexl2.JexlContext;
import org.apache.commons.jexl2.JexlEngine;
import org.apache.commons.jexl2.MapContext;

import java.math.BigDecimal;

public final class EvalUtil {

    public static BigDecimal evalFormula(String formula,BigDecimal base) {

        // 1. 初始化引擎
        JexlEngine jexl = new JexlEngine();
        // 3. 编译表达式
        Expression jexlExpr = jexl.createExpression(formula);
        // 4. 绑定变量
        JexlContext context = new MapContext();
        context.set("base", base);
        // 5. 执行计算
        Object result = jexlExpr.evaluate(context);
        System.out.println("结果：" + result); // 输出 ~10.8584

        return new BigDecimal((String) result);
    }

}
