/**
* java通过javascript引擎调用javascript数学函数实现计算
* 通过字符串格式的公式获取公式值
*
* @param inputFormula
* @return
*/
public static String retCalculatedValueFromString(String inputFormula) {
ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
String str = "0";
String formula = new String(inputFormula);
try {
if (StringisNotEmpty(formula)) {
formula = formula.replaceAll("--", "+");
formula = formula.replaceAll("\\+\\+", "+");
//计算
String tmp = retAString(jse.eval(formula));
if (!"NaN".equals(tmp) && !"Infinity".equals(tmp) && !"-Infinity".equals(tmp)) {
BigDecimal db = new BigDecimal(tmp);// 消除科学计数法
str = db.toPlainString();
}
}
} catch (ScriptException e) {
System.out.println("There is a problem with the formula format! formula:" + formula);
e.printStackTrace();
}
return str;
}
利用Chrome浏览器调用javascript引擎进行调试: