我在使用包含1.0E-4等值的jeval库评估表达式时遇到问题,或者在“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评估这些值?
答案 0 :(得分:0)
为什么不使用
String r2 = mEvaluator.evaluate("1/1.0E4");
答案 1 :(得分:0)
在我看来,jeval将1.0E-4
数字视为具有两个操作数的表达式:1.0E
减去4
。您可以使用一些解决方法,例如cristi_b建议。另一种方法是使用另一个脚本引擎。
JDK 6 provides API来评估JavaScript表达式,我认为它们与您尝试评估的内容兼容:
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval("1.0E-4");