好用的Java数学表达式计算工具——Exp4j

简介:

Exp4j是一个简单易用的开源Java数学表达式计算工具,由德国Java开源爱好者Frank发起并持续进行维护,旨在提供对数学表达式的计算功能。

实际使用一下:

 
  1. package org.demo.exp4j; 
  2.  
  3. import de.congrace.exp4j.Calculable; 
  4. import de.congrace.exp4j.ExpressionBuilder; 
  5. import de.congrace.exp4j.UnknownFunctionException; 
  6. import de.congrace.exp4j.UnparsableExpressionException; 
  7.  
  8. /** 
  9.  * Exp4j Demo 
  10.  * @author William Xu 
  11.  */ 
  12. public class Exp4jDemo { 
  13.  
  14.     // 包含变量的数学表达式 
  15.     private final String FUNCTION = "x/y + (x+y)*z"
  16.  
  17.     public Exp4jDemo() { 
  18.  
  19.     } 
  20.  
  21.     public void testFunction() { 
  22.  
  23.         // 构建表达式,并声明变量定义 
  24.         ExpressionBuilder builder = new ExpressionBuilder(FUNCTION) 
  25.                 .withVariableNames("x""y""z"); 
  26.          
  27.         // 以下两种方式也可以声明变量,并直接给变量进行赋值 
  28.         /*ExpressionBuilder.withVariable(String var,double value) 
  29.         ExpressionBuilder.withVariables(Map<String,Double> variables)*/ 
  30.          
  31.         try { 
  32.              
  33.             // 生成计算对象 
  34.             Calculable calc = builder.build(); 
  35.  
  36.             // 设置变量的值 
  37.             calc.setVariable("x"5); 
  38.             calc.setVariable("y"3); 
  39.             calc.setVariable("z"4); 
  40.  
  41.             // 计算结果 
  42.             System.out.println(calc.calculate()); 
  43.  
  44.         } catch (UnknownFunctionException e) { 
  45.             e.printStackTrace(); 
  46.         } catch (UnparsableExpressionException e) { 
  47.             e.printStackTrace(); 
  48.         } 
  49.     } 
  50.  
  51.  
  52.     public static void main(String[] args) { 
  53.  
  54.         Exp4jDemo exp4jDemo = new Exp4jDemo(); 
  55.          
  56.         exp4jDemo.testFunction(); 
  57.  
  58.  
  59.     } 

Exp4j所支持的运算符包括:

  • 加法:“2 + 2
  • 减法:“2 - 2”
  • 乘法:“2 * 2
  • 除法:“2 / 2
  • 取模:“2 % 2”
  • 正负号:“+2 - (-2)”
  • 幂:“2 ^ 2”
内建函数包括:
  • abs: absolute value
  • acos: arc cosine
  • asin: arc sine
  • atan: arc tangent
  • cbrt: cubic root
  • ceil: nearest upper integer
  • cos: cosine
  • cosh: hyperbolic cosine
  • exp: euler's number raised to the power (e^x)
  • floor: nearest lower integer
  • log: logarithmus naturalis (base e)
  • sin: sine
  • sinh: hyperbolic sine
  • sqrt: square root
  • tan: tangent
  • tanh: hyperbolic tangent



本文转自william_xu 51CTO博客,原文链接:http://blog.51cto.com/williamx/1065823,如需转载请自行联系原作者

 

 

相关文章
|
4天前
|
Java
探索Java中的Lambda表达式
【9月更文挑战第28天】Lambda表达式,这一Java 8引入的轻量级语法结构,为函数式编程提供了强有力的支持。它简化了代码,提高了开发效率,并使得并行处理数据变得异常容易。本文将通过直观的例子和详细的解释,带领读者深入理解Lambda表达式的奥秘,从而在编程实践中更加灵活地运用它们。
|
5天前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
17 5
|
3天前
|
Java 开发者
探索Java中的Lambda表达式:简化你的代码之旅##
【8月更文挑战第62天】 Java 8的发布为开发者带来了诸多新特性,其中最引人注目的无疑是Lambda表达式。这一特性不仅让代码变得更加简洁,还极大地提升了开发的效率。本文将通过实际示例,展示如何利用Lambda表达式来优化我们的代码结构,同时探讨其背后的工作原理和性能考量。 ##
|
4天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
12 3
|
4天前
|
Java API 开发者
探索Java中的Lambda表达式
【9月更文挑战第29天】Lambda表达式,在Java编程中,它不仅仅是一种语法糖,更是简化代码、提升效率的利器。本文将通过浅显易懂的语言和实际代码示例,带你走进Lambda的世界,了解其背后的原理和在日常开发中的应用,让你的代码更简洁、更高效。
|
5天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
14 4
|
3天前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
16 1
|
4天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
7 2
|
6天前
|
JSON Java fastjson
java小工具util系列3:JSON和实体类转换工具
java小工具util系列3:JSON和实体类转换工具
11 2
|
Java Unix 数据库管理
java定时框架:表达式设置
Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知)   时间格式: ,   分别对应: 秒>分>小时>日>月>周>年,  举例: 1.
866 0
下一篇
无影云桌面