1

我在使用jeval库评估表达式时遇到问题,该库包含 1.0E-4 之类的值,或在“E”之后带有“-”的任何其他值

Evaluator mEvaluator = new Evaluator();
String r1 = mEvaluator.evaluate("1/10000"); // Works, r1 == "1.0E-4"
String r2 = mEvaluator.evaluate("1.0E-4");  // Doesn't work, exception is thrown
String r3 = mEvaluator.evaluate("1.0E4");   // Works, r3 == "1.0E4"

例外是:

12-25 12:10:51.495: W/System.err(5225): net.sourceforge.jeval.EvaluationException: Expression is invalid.

如何使用 jeval 评估这些值?

4

2 回答 2

0

为什么不使用

String r2 = mEvaluator.evaluate("1/1.0E4");
于 2012-12-25T10:30:47.943 回答
0

在我看来, jeval 将1.0E-4number 视为具有两个操作数的表达式:1.0E减号4。您可以使用一些解决方法,就像 cristi_b 建议的那样。另一种选择是使用另一个脚本引擎。

JDK 6提供了评估 JavaScript 表达式的 API,我认为它们与您尝试评估的内容兼容:

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval("1.0E-4");
于 2012-12-25T10:43:51.177 回答