Java中用于解析数学表达式的好库是什么?

22

我是一名Android开发者,作为下一个应用程序的一部分,我需要评估大量用户创建的数学表达式和方程式。我正在寻找一款良好的Java库,它可以使用用户定义的变量和常量、三角和指数函数等,轻巧地计算数学表达式。

我已经搜索过了,Jep似乎很受欢迎,但我想听听更多建议,特别是来自之前使用过这些库的人的建议。

5个回答

4

我之前写了一个简单但功能强大的数学表达式求值器,它是免费且开源的。它的主要优点是快速和小巧 - 这对手持设备来说是一件好事。如果它满足您的需求,欢迎使用。

主要特点:

  • 基本数学运算符,包括推断优先级(^ * × · / ÷ % + -)。
  • 带括号的显式优先级。
  • 括号内子表达式的隐式乘法。
  • 正确的指数(幂运算符)的右结合性。
  • 直接支持以0x为前缀的十六进制数。
  • 常量和变量。
  • 可扩展操作符。
  • 可扩展函数。
  • 20 KiB占用空间。

示例

MathEval math=new MathEval();

math.setVariable("Top",    5);
math.setVariable("Left",  20);
math.setVariable("Bottom",15);
math.setVariable("Right", 60);

System.out.println("Middle: "+math.evaluate("floor((Right+1-Left)/2)"));

虽然这很简洁,但我需要更高级的功能和表达式的支持。 - CodeFusionMobile
1
我尝试了一下,看起来非常好用。又简单又方便。谢谢! - dreeves
除非在此处发布代码,否则不提供答案。 - user207421

4

JEval 是一个很好的替代品。由于Jep被商业化,我已经放弃使用它。唯一的担忧是目前JEval似乎有点停滞不前(最后发行版本为2008年)。


1

4
这个库的一些特点可以列举出来,或者解释一下它与其他现有库相比的优势,这样你的回答会更好。 - adamdunson

0

这并不完全符合我的初始条件,但我发现了一个用C++编写的精彩解析器。我正在尝试弄清楚Android的本地代码支持,看看是否可以使用它。这正是我所需要的。

以下是该项目的文档。
http://www.codeproject.com/KB/recipes/MathieuMathParser.aspx


0

有一个新的商业工具叫做formula4j,可能会引起一些人的兴趣。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接