1.传入一个计算公式如:a+b/c
2.带入公式进行计算
3.保留小数点位数
代码如下:
public static Object cal(String str) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
Object result=null;
try {
result = engine.eval(str);
} catch (ScriptException e) {
e.printStackTrace();
}
System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result);
return result;
}
public static void main(String[] args) {
Map<String,Object> map = new HashMap<String,Object>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
String s = "a,b,c";
String[] strSplit = s.split(",");
String str = "(b-a)/c";
//把公式里面的变量替换成数字
for (int i = 0; i < strSplit.length; i++) {
str = str.replaceAll(strSplit[i], map.get(strSplit[i]).toString());
}
//替换成数字后进行计算
Object obj = cal(str);
//计算完后是一个Object类型的带有N多个小数,String.format()是进行数字的保留位数并进行四舍五入
System.out.println(String.format("%.2f",obj));
}