java通过javascript引擎调用javascript数学函数实现计算

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

猜你喜欢

转载自my.oschina.net/leichunyuan/blog/1825941