为了扩展列表,我也刚刚完成了一个:
https://github.com/uklimaschewski/EvalEx
EvalEx是Java的一个方便的表达式计算器,它允许计算简单的数学和布尔表达式。
主要特点:
- 使用 BigDecimal 进行计算和结果
- 单类实现,非常紧凑
- 与外部库无依赖关系
- 可设置精度和舍入模式
- 支持变量
- 标准布尔运算符和数学运算符
- 标准基本数学和布尔函数
- 可以在运行时添加自定义函数和运算符
例子:
BigDecimal result = null;
Expression expression = new Expression("1+1/3");
result = expression.eval():
expression.setPrecision(2);
result = expression.eval():
result = new Expression("(3.4 + -4.1)/2").eval();
result = new Expression("SQRT(a^2 + b^2").with("a","2.4").and("b","9.253").eval();
BigDecimal a = new BigDecimal("2.4");
BigDecimal b = new BigDecimal("9.235");
result = new Expression("SQRT(a^2 + b^2").with("a",a).and("b",b).eval();
result = new Expression("2.4/PI").setPrecision(128).setRoundingMode(RoundingMode.UP).eval();
result = new Expression("random() > 0.5").eval();
result = new Expression("not(x<7 || sqrt(max(x,9)) <= 3))").with("x","22.9").eval();