我用的是java的 ScriptEngineManager
运行一些将以字符串值形式出现的数学公式。
但我收到以下错误,我找不到原因。
private void testFormula(){
String form ="((15.643333435058594+15.79137191501063+15.432352762204175+15.77764736947019+15.550000190734863)/5-15)-0.6";
String form2 = "(((13.468705654144287)^0.25)*100)–204.45040893554688";
try {
//Debug info
log.info("[PRE-ENGINE][" + form + "]");
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
form2 = engine.eval(form2).toString();
//Debug info
log.info("[RESULT:" + form2 + "]");
} catch (Exception ex) {
log.error(ex.getMessage());
}
}
当我使用字符串form1运行adobe代码时,会毫无问题地返回结果。但是当我使用form2时,我得到了以下错误:
<eval>:1:33 Expected ; but found error
(((13.468705654144287)^0.25)*100)–204.45040893554688
^ in <eval> at line number 1 at column number 33
我不知道这个错误的原因是什么。
1条答案
按热度按时间zengzsys1#
主要的问题是
String
实际上是unicode en破折号,因此无法正确解释;替换为实际的减号(-
)来解决这个问题。另一个问题是
^
实际上是按位异或运算符,它不执行指数运算。你需要用**
.