如何评估具有指数的字符串

时间:2013-09-16 20:03:39

标签: java eval

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),所以我的问题是我如何设置它的方式将是所有整个方程的字符串,将评估支持指数,结果是否正确?

我应该使用其他图书馆吗?

1 个答案:

答案 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