Exp4j是一个简单易用的开源Java数学表达式计算工具,由德国Java开源爱好者Frank发起并持续进行维护,旨在提供对数学表达式的计算功能。
实际使用一下:
- package org.demo.exp4j;
- import de.congrace.exp4j.Calculable;
- import de.congrace.exp4j.ExpressionBuilder;
- import de.congrace.exp4j.UnknownFunctionException;
- import de.congrace.exp4j.UnparsableExpressionException;
- /**
- * Exp4j Demo
- * @author William Xu
- */
- public class Exp4jDemo {
- // 包含变量的数学表达式
- private final String FUNCTION = "x/y + (x+y)*z";
- public Exp4jDemo() {
- }
- public void testFunction() {
- // 构建表达式,并声明变量定义
- ExpressionBuilder builder = new ExpressionBuilder(FUNCTION)
- .withVariableNames("x", "y", "z");
- // 以下两种方式也可以声明变量,并直接给变量进行赋值
- /*ExpressionBuilder.withVariable(String var,double value)
- ExpressionBuilder.withVariables(Map<String,Double> variables)*/
- try {
- // 生成计算对象
- Calculable calc = builder.build();
- // 设置变量的值
- calc.setVariable("x", 5);
- calc.setVariable("y", 3);
- calc.setVariable("z", 4);
- // 计算结果
- System.out.println(calc.calculate());
- } catch (UnknownFunctionException e) {
- e.printStackTrace();
- } catch (UnparsableExpressionException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- Exp4jDemo exp4jDemo = new Exp4jDemo();
- exp4jDemo.testFunction();
- }
- }
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,如需转载请自行联系原作者