2012-12-25 50 views
1

我有評估使用jeval庫包括像1.0E-4,或與任何其他值的值的表達式有問題 「 - 」, 「E」 後如何使用jeval評估指數形式的數字?

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

爲什麼不使用

String r2 = mEvaluator.evaluate("1/1.0E4"); 
+0

嗯,有趣的想法,但是這是一個有點難看,我想...... – Prizoff

+0

沒在javadocs或api中找不到任何東西,但它應該可以工作 –

+0

問題是,這個低指數值在方程中間的某個地方......更重要的是,它可以在中間計算過程中返回......因此,理想情況下,我想在下一個evaluate()中使用evaluate()的結果,似乎需要檢查上次返回的評估值()。 – Prizoff

0

在我看來,那jeval對待1.0E-4數與兩個操作數的表達式:1.0E減去4。你可以使用一些解決方法,比如cristi_b建議的。另一種選擇是使用另一個腳本引擎。

JDK 6 provides API評估JavaScript表達式,我認爲他們是與你嘗試EVAL什麼兼容:

ScriptEngineManager factory = new ScriptEngineManager(); 
ScriptEngine engine = factory.getEngineByName("JavaScript"); 
engine.eval("1.0E-4");