我已经在谷歌上搜索了一段时间,但找不到我需要的东西。 我需要一个开源数学表达式解析器和评估器 - 其中有无数 - 但是它链接到像 Apache Commons Math 这样的像样的数学库。我需要复杂的算术、在复平面上工作的基本函数(如 sin、log)以及函数(如 gamma、erf)。
我找到的最接近的答案是 Built-in method for evaluating math expressions in Java - 但除了编写无数的辅助函数之外,我不知道如何绑定(bind)
- jexpr
- jruby
- 杰瓦尔
- javax.script
使用 Commons 数学。此外,修改我自己现有的(实值)表达式解析器以绑定(bind)所有函数也需要相当多的工作。
另外,在我的应用程序中包含像 python/ruby 这样的完整脚本编程语言似乎有些过分了,我想做的只不过是一个老式的袖珍计算器。
有人已经做过这种事吗? 谢谢!
最佳答案
您可能想查看我创建的实现:
https://github.com/uklimaschewski/EvalEx .
它基于java.math.BigDecimal
并支持基本的数学和 boolean 运算。
它是一个非常紧凑的实现:只有一个类文件,没有任何对其他库的依赖。另外,它可以通过自定义函数和运算符轻松扩展。
您的 gamma(1.8)
示例可以通过以下方式添加:
Expression e = new Expression("gamma(1.8)");
e.addFunction(e.new Function("gamma", 1) {
@Override
public BigDecimal eval(List<BigDecimal> parameters) {
BigDecimal gamma = MyMathLibraryGammaCalculation(parameters.get(0));
return gamma;
}
});
e.eval(); // returns gamma(1.8)
关于java - 与 Apache commons math 绑定(bind)的小型 Java 开源数学表达式计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15320224/