0

我需要在 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 的替代品?

4

2 回答 2

1

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

于 2013-10-26T11:44:50.970 回答
1

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

于 2013-10-26T11:48:37.737 回答