我需要在 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
. 我根本无法怀疑一切D
,L
因为当有类似的东西时我得到错误的结果有3L/2L -> 1 (but should be 1.5
没有人知道如何处理大量数字,9223372036854775807 or -9223372036854775808
或者任何人都可以建议 BeanShell 的替代品?