Javax ScriptEngine和JEval的工作方式类似,你输入一个字符串并发送它进行评估,它会返回它的结果:
在ScriptEngine中(在JEval中几乎相同):
System.out.println(engine.eval("2*3+4"));
将导致:
10.0
但是当我试图让它成为一个指数时:
System.out.println(engine.eval("2^3+4"));
将导致:
5.0
但它真的应该导致12(2 ^ 3 = 8,8 + 4 = 12),所以我的问题是我如何设置它的方式将是所有整个方程的字符串,将评估支持指数,结果是否正确?
我应该使用其他图书馆吗?
答案 0 :(得分:4)
^
是XOR操作数,您的字符串表示2 XOR 3 + 4
,事实上评估为1 + 4
。
你必须使用
Math.pow(2,3) + 4
这是我的代码:
System.out.println(engine.eval("Math.pow(2,3) + 4"));
输出:
12.0