好用的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,如需转载请自行联系原作者

 

 

相关文章
|
10天前
|
Java
探索Java中的Lambda表达式
【10月更文挑战第37天】本文将带你深入理解Java的Lambda表达式,从基础语法到高级特性,通过实例讲解其在函数式编程中的应用。我们还将探讨Lambda表达式如何简化代码、提高开发效率,并讨论其在实际项目中的应用。
|
12天前
|
Java API
Java中的Lambda表达式与函数式编程####
【10月更文挑战第29天】 本文将深入探讨Java中Lambda表达式的实现及其在函数式编程中的应用。通过对比传统方法,我们将揭示Lambda如何简化代码、提高可读性和维护性。文章还将展示一些实际案例,帮助读者更好地理解和应用Lambda表达式。 ####
|
12天前
|
JSON 自然语言处理 Java
这款轻量级 Java 表达式引擎,真不错!
AviatorScript 是一个高性能、轻量级的脚本语言,基于 JVM(包括 Android 平台)。它支持数字、字符串、正则表达式、布尔值等基本类型,以及所有 Java 运算符。主要特性包括函数式编程、大整数和高精度运算、完整的脚本语法、丰富的内置函数和自定义函数支持。适用于规则判断、公式计算、动态脚本控制等场景。
|
17天前
|
Java API 开发者
Java中的Lambda表达式与函数式编程####
在Java的演变过程中,Lambda表达式和函数式编程的引入无疑是一次重大的飞跃。本文将深入探讨Lambda表达式的定义、用法及优势,并结合实例说明如何在Java中利用Lambda表达式进行函数式编程。通过对比传统编程方式,揭示Lambda表达式如何简化代码、提高开发效率和可维护性。 ####
|
15天前
|
存储 分布式计算 Java
存算分离与计算向数据移动:深度解析与Java实现
【11月更文挑战第10天】随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggregated Storage and Compute Architecture)和计算向数据移动(Compute Moves to Data)两种架构应运而生,成为大数据处理领域的热门技术。
38 2
|
20天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
23天前
|
Java API 数据处理
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。
|
20天前
|
Java API Apache
java集合的组内平均值怎么计算
通过本文的介绍,我们了解了在Java中计算集合的组内平均值的几种方法。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。无论是使用传统的循环方法,还是利用Java 8的Stream API,亦或是使用第三方库(如Apache Commons Collections和Guava),都可以有效地计算集合的组内平均值。希望本文对您理解和实现Java中的集合平均值计算有所帮助。
24 0
|
Java 网络安全 数据安全/隐私保护
[Java工具] 邮件发送工具
注册邮箱 去163邮箱(或其他邮箱)注册一个邮箱,并开启SMTP授权码。 程序 需要注意的是,由于阿里云服务器不让使用默认的25端口,所以会出现Windows下测试发送邮件成功,Linux服务器下发送邮件却出错的问题(broke pipe、timeout、can not connect等)。
1759 0
下一篇
无影云桌面