jinpengyong
2021-08-26 2818433841637ac5aaa8823f2904aec417ef72b7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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 null;
        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();
    }
}