【问题标题】:What's a good library for parsing mathematical expressions in java? [closed]什么是在java中解析数学表达式的好库? [关闭]
【发布时间】:2010-02-09 05:03:51
【问题描述】:

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

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

【问题讨论】:

    标签: java android math parsing


    【解决方案1】:

    不久前我写了一个简单但功能强大的Math Expression Evaluator,它是免费和开源的。它的主要优势是速度快且体积小——这对于手持设备来说都是一件好事。如果它满足您的需求,欢迎您使用它。

    主要特点:

    • 具有推断优先级的基本数学运算符 (^ * × · / ÷ % + -)。
    • 带括号的显式优先级。
    • 括号内的子表达式的隐式乘法。
    • 修正指数的右结合性(幂运算符)。
    • 直接支持以 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)"));
    

    【讨论】:

    • 不错的小,但恐怕我需要支持更高级的功能和表达式。
    • 我试过这个,它似乎工作得很好。很好很简单。谢谢!
    • 除非代码贴在这里,否则不是答案。
    【解决方案2】:

    JEval 是一个不错的选择。由于 Jep 商业化,我放弃了它。唯一担心的是,JEval 目前似乎有点休眠(最后一次发布于 2008 年)。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 你的答案可以通过列出这个库的一些特性来改进,或者,也许通过解释它与其他现有库的比较。
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-08
          • 1970-01-01
          • 2011-08-08
          • 2011-02-25
          • 1970-01-01
          相关资源
          最近更新 更多