Я использую библиотеку JEXL для вычисления математического выражения с различными аргументами (например, y = 2x + a ^ 2-4 * a * x, где (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!
Что я делаю не так?