如何使用java评估指数形式的数字?

时间:2012-12-25 10:17:33

标签: java math evaluation

我在使用包含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评估这些值?

2 个答案:

答案 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");