gpt4 book ai didi

java - 为什么jexl calc算术错误

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:28 25 4
gpt4 key购买 nike

我使用 JEXL计算具有不同参数的数学表达式的库(例如 y=2x+a^2-4*a*x where (x=1&a=3), (x=5&a=-15), 等等)。它适用于简单的表达式,但当我开始使用更难的表达式时 - 它不起作用。这是运行良好的代码:

JexlEngine jexl = new JexlEngine();
Expression func = jexl.createExpression("x1+x2");
MapContext mc = new MapContext();
mc.set("x1", 2);
mc.set("x2", 1);
System.out.println(func.evaluate(mc)); // prints "3" - GOOD ANSWER!

但是这个打印错了答案:

JexlEngine jexl = new JexlEngine();
Expression func = jexl.createExpression("(x1-2)^4+(x1-2*x2)^2");
MapContext mc = new MapContext();
mc.set("x1", 2);
mc.set("x2", 1);
System.out.println(func.evaluate(mc)); // prints "6" - WRONG ANSWER!

我做错了什么?

最佳答案

你可以这样做:

   Map<String, Object> functions=new HashMap<String, Object>(); 
// creating namespace for function eg. 'math' will be treated as Math.class
functions.put( "math",Math.class);
JexlEngine jexl = new JexlEngine();
//setting custom functions
jexl.setFunctions( functions);
// in expression 'pow' is a function name from 'math' wich is Math.class
Expression expression = jexl.createExpression( "math:pow(2,3)" );
expression.evaluate(new MapContext());

关于java - 为什么jexl calc算术错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8284059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com