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 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

感兴趣的话可以访问项目地址:http://www.objecthunter.net/exp4j/index.html 了解更加详细的文档。