package com.fanruan.api.cal; import com.fanruan.api.err.KitError; import com.fr.base.BaseFormula; import com.fr.script.Calculator; import com.fr.stable.UtilEvalError; import com.fr.stable.script.CalculatorProvider; /** * @author richie * @version 10.0 * Created by richie on 2019-08-15 * 公式计算相关的工具类 */ public class FormulaKit { /** * 计算公式的值,会新建一个算子对象来计算该公式 * @param formula 公式内容 * @return 公式计算后的结果值 * @throws KitError 如果计算过程中出现错误,则抛出此异常 */ public static Object eval(String formula) throws KitError { return eval(Calculator.createCalculator(), formula); } /** * 计算公式的值 * @param calculator 自定义算子 * @param formula 公式内容 * @return 公式计算后的结果值 * @throws KitError 如果计算过程中出现错误,则抛出此异常 */ public static Object eval(CalculatorProvider calculator, String formula) throws KitError { try { return BaseFormula.createFormulaBuilder().build(formula).eval(calculator); } catch (UtilEvalError u) { throw new KitError(u); } } }