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();
|
}
|
}
|