我一直在搜索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/