android java用字符串格式求解方程式

时间:2013-10-26 11:35:06

标签: java android equation

我需要在Android应用中解决字符串方程,例如“3 + 4 *(5 - log(100))”。我已经尝试过使用BeanShell,不幸的是我对整数/十进制数有一些问题。当我进入

 Interpreter interpreter = new Interpreter();
 String res = "9223372036854775807D";
 interpreter.eval("result = " + res);
 res = interpreter.get("result").toString();
 res = new BigDecimal(res).stripTrailingZeros().toPlainString();

我得到结果9223372036854776000 ??

但是当我使用String res = "9223372036854775807D";时,我得到了正确的9223372036854775807。 我根本无法怀疑所有DL,因为当我遇到像3L/2L -> 1 (but should be 1.5这样的东西时,我会得到错误的结果 有谁知道如何处理大量数字,如9223372036854775807 or -9223372036854775808,还是有人可以建议替代BeanShell?

2 个答案:

答案 0 :(得分:1)

你试过JEP表达式解析器了吗? 它是一个纯数学表达式解析器,纯粹用Java编写,可以解析三角函数,对数函数,复数值,你也可以定制自己的函数...

答案 1 :(得分:1)

使用MathEval从以下链接下载:http://tech.dolhub.com/code/matheval