package com.moral.util; import org.springframework.util.ObjectUtils; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import java.math.BigDecimal; /** * @ClassName UnitConvertUtils * @Description TODO * @Author 陈凯裕 * @Date 2021/7/5 9:00 * @Version TODO **/ public class UnitConvertUtils { /* * 小数点后保留位数 * */ public static Integer num = 3; /** * @Description: value为要转换的值,format为公式 * @Param: [value, format] * @return: java.lang.Double * @Author: 陈凯裕 * @Date: 2021/7/5 */ public static String calculate(String value, String formula) { if(ObjectUtils.isEmpty(formula)) return value; ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript"); formula = formula.replaceAll("\\{0\\}", value); Double result = null; try { result = (Double) jse.eval(formula); } catch (ScriptException e) { e.printStackTrace(); } //保留小数点后三位 BigDecimal bg = new BigDecimal(result); result = bg.setScale(num, BigDecimal.ROUND_HALF_UP).doubleValue(); return result.toString(); } }