/** * 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引擎进行调试: