1.引入 Maven 坐标
<!--公式计算-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jexl</artifactId>
<version>2.1.1</version>
</dependency>
2.直接上代码
public static void main(String[] args){
// 公式字符串:(2+x)*(1+x)
Map<String, Object> map = new HashMap<String, Object>();
// map key是 公式中的 x value 是x的值
// map 中可以放多个值 y z 之类
map.put("x", "4.44");
String formula = "(2+x)*(1+x)";
String result = calculation(formula,map);
System.out.println(result);
// 计算结果保留两位小数
BigDecimal bNum = new BigDecimal(result).setScale(2,BigDecimal.ROUND_HALF_DOWN);
System.out.println(bNum.toString());
}
// 计算的 方法
private static String calculation(String jexlExp, Map<String, Object> map){
JexlEngine jexl = new JexlEngine();
Expression expression = jexl.createExpression(jexlExp);
JexlContext jc = new MapContext();
for (String key : map.keySet()) {
jc.set(key, map.get(key));
}
if (null == expression.evaluate(jc)) {
return "";
}
return expression.evaluate(jc).toString();
}