【问题标题】:Java: Is there a tool available that can allow me input, store, and evaluate math formulas?Java:是否有可以让我输入、存储和评估数学公式的工具?
【发布时间】:2008-12-31 11:57:44
【问题描述】:

即使是非常基本的东西也可以。就像输入和评估像 x+1 这样的东西,其中 x 是我要指定的变量。

我正在考虑为每个公式编写自己的字符串,使用正则表达式来解析它们等,但假设我的目标是尽可能地偷懒,并且如果有其他选择(尤其是一个正式的),我宁愿首先尝试使用它。

有什么东西可以做这样的事情吗?

【问题讨论】:

    标签: java math formulas


    【解决方案1】:

    我知道以下库:

    【讨论】:

      【解决方案2】:

      您可以考虑使用 Java 6 中的 scripting。参考 JDK 带有 JavaScript 实现,您也可以插入其他语言。

      【讨论】:

      • 这可能行得通,但对于我需要的东西来说,这可能太大了。还有比这更简单的吗?
      • 好吧,你在哪里画出你需要什么级别的权力? :-)
      • 好吧,除非它在未来的表现令人望而却步,否则我并没有真正划清界限。我想我就这样吧。
      • 如果你关心性能,那么你应该从scripting.dev.java.net下载Rhino引擎(因为Rhino有一个字节码编译器——但是JDK捆绑的版本已经去掉了编译器)。跨度>
      • 顺便说一句,编写自己的引擎很容易,只需使用该站点的代码作为模板(转到 CVS 部分,并使用用户“guest”检查代码---无需密码)。
      【解决方案3】:

      几年前我成功地使用了JEP,它似乎仍在积极开发中。我相信当时他们有一个更宽松的许可证,但它可能比自己编写代码便宜(取决于你的确切需求和技能)。

      【讨论】:

      • 有趣。如果这更合适,这就是我可能使用的。现在调查一下。
      • 天哪!那是一个地狱般的许可证!我想我会坚持编写脚本,因为我需要做的是非常基本的(暂时)。
      • JEP 曾经是 GPL。你仍然可以在这里下载 GPL 版本:sourceforge.net/projects/jep
      【解决方案4】:

      我已经构建了一个 java 库来做这件事,作为 Lex/YACC 的学习示例,供我自己使用。它被合并到一个更大的项目中,似乎运行良好。如果我要重新开始更大的项目,我会遵循上面的建议并使用 Java 脚本引擎。

      【讨论】:

      • 是的,我同意。特别是因为 JEP 的许可证价格约为 500 美元。 :P
      【解决方案5】:

      您可以尝试LibFormula,这是一个基于 OpenDocument 的 OpenFormula 标准的公式计算库。

      OpenFormula 是为电子表格应用程序编写的,并使用接近 Excel 公式的语法。更多信息可以在Pentaho-Wiki中找到

      示例:

      =[x]+1
      

      【讨论】:

        【解决方案6】:

        您可以查看我在Apache License 2.0 下发布的exp4j。它实现了dijkstra的调车场算法,并且可以很好地与f(x,foo)=log(foo^(x^-1))等多变量函数配合使用

        【讨论】:

          【解决方案7】:

          有些人可能对名为formula4j 的新工具感兴趣。

          它是商业的,所以它并不适合所有人。

          【讨论】:

            【解决方案8】:

            也许是MathML

            MathML 是一种低级规范,用于将数学描述为机器对机器通信的基础,它为在网页中包含数学表达式提供了急需的基础。在发布科学和技术工作流程以及必须通过软件处理数学的任何地方,它也很重要。例如,新版本改进了数学的可访问性,以及从右到左书写的语言公式。基本标记保持不变,因为社区有七年的使用经验。

            【讨论】:

            • 我以后一定会调查的。
            • 我认为 MathML 只是用于标记数学表达式,而不是评估它们。
            • 是的。 XML。这不是我所需要的,除非我开始在我的项目中朝着新的方向前进。不过,很高兴知道。
            猜你喜欢
            • 2011-08-08
            • 2018-03-05
            • 1970-01-01
            • 2023-03-11
            • 1970-01-01
            • 1970-01-01
            • 2016-06-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多