我一直在搜索google一段时间,但找不到我需要的东西。
我需要一个开源的数学表达式解析器和评估器-其中有无数的-
但是可以链接到像Apache Commons Math这样的不错的数学库。我需要复杂的算术运算,诸如sin的基本函数,在复杂平面上工作的log以及诸如gamma,erf的函数。

我找到的最接近答案是Built-in method for evaluating math expressions in Java-但除了编写无数的辅助函数外,我看不到如何绑定


杰普
茹比
耶瓦尔
javax.script


与Commons数学。同样,修改我自己现有的(实值)表达式解析器以绑定所有功能也将花费很多工作。

另外,在我的应用程序中包括python / ruby​​之类的整个脚本编程语言似乎有些过头,我想要做的仅是一台老式的袖珍计算器而已。

有人没有做过这种事情吗?
谢谢!

最佳答案

您可能想检查一下我创建的实现:

https://github.com/uklimaschewski/EvalEx

它基于java.math.BigDecimal并支持基本的数学和布尔运算。
这是一个非常紧凑的实现:只有一个类文件,而对其他库没有任何依赖性。另外,可以使用自定义功能和运算符轻松扩展它。

您的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/

10-14 10:06