什么是在java中解析数学expression式的好库?

我是Android开发人员,作为我的下一个应用程序的一部分,我需要评估各种用户创建的数学expression式和方程式。 我正在寻找一个很好的java库,它是轻量级的,可以使用用户定义的variables和常量,trig和指数函数等来评估数学expression式。

我环顾四周, Jep似乎很受欢迎,但我想听到更多建议,特别是那些以前使用过这些库的人。

  • 来自Url的Json Parsing在Android中,不起作用
  • 如何使用Android Lollipop中的注释在Android Jackson Parsing中修复IncompatibleClassChangeError?
  • 电子书解析器(.azw,.mobi,epub)?
  • Android:为什么要为ldpi,mdpi和hdpi创建特定图像?
  • 在Android中使用Sax解析本地XML文件
  • JEval是个不错的选择。 由于它变得商业化,我放弃了Jep。 唯一值得关注的是,JEval目前似乎有点hibernate(2008年最后一次发布)。

    我曾经写过一个简单但function强大的数学expression式评估器 ,它是免费的开源软件。 它的主要优点是快速而小巧 – 手持设备都是一件好事。 如果它符合您的需求,欢迎您使用它。

    主要特点:

    • 基本数学运算符,具有推断的优先级(^ *×·/÷%+ – )。
    • 带括号的显式优先级。
    • 括号内子expression式的隐式乘法。
    • 纠正指数的权利相关性(权力运算符)。
    • 直接支持前缀为0x的hex数字。
    • 常量和variables。
    • 可扩展的运营商。
    • 可扩展的function。
    • 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)")); 

    试试https://code.google.com/p/expressionoasis/ 。 它是一个可扩展的expression式评估框架,将满足这些要求。

    这并不完全符合我的初始条件,但我find了一个用C ++编写的精彩解析器。 我正在试图找出Android的Native代码支持,看看我是否可以使用它。 这正是我的需要。

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

    有一种叫做formula4j的新商业工具,有些人可能对此感兴趣。