或者市面上有没有开箱即用的 jar
例如计算
String str = “1+23-4+(4/2)^25+(4/2)^2*2.222E-6”;
如何计算呢。。。
或者市面上有没有开箱即用的 jar
例如计算
String str = “1+23-4+(4/2)^25+(4/2)^2*2.222E-6”;
如何计算呢。。。
|
1
ScriptEngineManager
|
|
PerciFeb 26, 2020 via Android
2
用夹娃实现计算器
|
|
TsukihimeFeb 26, 2020
3
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName ("JavaScript"); final Object eval = engine.eval("1 + 23 - 4 + (4/2)^25 + (4/2)^2*2.222E-6"); System.out.println(eval); |
|
lqsFeb 26, 2020
4
内嵌一个 JS 或 Python 解释器(记得先把 ^替换成**)
|
|
zjsxwcFeb 26, 2020
5
这表达式是科学计算器的语法,js 也不支持幂运算,直接调用命令行获取运算结果呗
``` $octave --eval "1+23-4+(4/2)^25+(4/2)^2*2.222E-6" ans = 3.3554e+07 ``` |
|
zjsxwcFeb 26, 2020
6
|
|
8
ScriptEngineManager 太重了,可以用 exp4j。
https://www.objecthunter.net/exp4j/ |
|
9
<groupId>org.scijava</groupId>
<artifactId>jep</artifactId> 我用的这个,可以自定义函数 |
|
liujanFeb 26, 2020 via iPhone
11
qlexpress 试试
|
|
12
老有人说做算法题没用,你把这俩题结合起来不就是你的需求了:
https://leetcode.com/problems/valid-number/ https://leetcode.com/problems/basic-calculator-ii/ |
|
qyvlikFeb 26, 2020
13
可以参考这个项目 https://github.com/qyvlik/formula,支持变量替换计算。
具体是使用 JVM 自带的 ScriptEngine,移除 ScriptEngine 内的 `quit` 等有全局影响的函数, 创建可以参考如下: https://github.com/qyvlik/formula/blob/master/src/main/java/io/github/qyvlik/formula/modules/formula/service/impl/FormulaCalculatorImpl.java#L65 创建指定 "-strict", "--no-java", "--no-syntax-extensions" 参数,创建完毕后,移除不必要的有全局副作用的 js 函数。 此外可以考虑自己练手,使用 一些编译原理、逆波兰表达式等知识,自己实现四则计算器,还可以顺手防止恶意代码注入呢。 |
|
blackFoolFeb 26, 2020
14
com.googlecode.aviator
|
|
xyooyxFeb 26, 2020
16
中序表达式转前序表达式
|
|
jorneyrFeb 26, 2020
17
也可以调用 Groovy 脚本
|
|
hhhsuanFeb 26, 2020
18
轮子太多了,一搜一大把,比如这个: https://mathparser.org/
|
|
xupefeiFeb 26, 2020 via iPhone
19
|
|
mineqiqiFeb 26, 2020
20
好像轮子挺多的
|
|
hantsyFeb 26, 2020
21
@leishi1313 按照以前大学的数据结构课程,字符是不是应该用什么 FIFO 容器存放,一个个字符分析,加减乘除()有优先级不同。
|
|
HuHuiFeb 26, 2020
22
Apache Commons JEXL
|
|
ic2yFeb 26, 2020
23
|
|
ComdexFeb 26, 2020 via iPhone
24
中缀表达式
|
|
bjrjkFeb 27, 2020 via Android
25
中缀表达式转后缀表达式再计算结果输出
|
|
leishi1313Feb 27, 2020 via Android
26
@xupefei 3 要会员😂
|