2014-12-23 95 views
1

JEXL評估返回int,而不是浮動:JEXL評估返回int

JexlEngine jexl = new JexlEngine(); 
Expression e = jexl.createExpression("7/2"); 
Float result = (Float)e.evaluate(null); 

我收到此錯誤:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Float 

我可以改變的設置返回一個浮動?

+0

你可以嘗試改變表達式爲'7/2.0'嗎? –

+0

看起來更好,我現在得到這個:java.lang.ClassCastException:java.lang.Double不能轉換爲java.lang.Float,但我可以使用result.floatValue()來轉換它。儘管因爲現在我必須創建一個方法來添加小數。 – Andrew

+0

嘗試更改爲'7/2.0F' –

回答

2

7/2表達式會爲int的結果,所以它未能投整型到浮點型,如果你希望它是導致浮動你需要改變表達7/2.0F

+0

完美地工作.... – bynu022

0

要準確,你必須轉換爲浮動您的任何參數,請使用這些(7/2F)(7F/2)中的任意一個。

然而,由於Java的自動拆箱,你可避免的異常在你最初的代碼,但在精密不幸輸了,如果你使用

Float result = (float)e.evaluate(null); 

,將工作是鑄造到雙另一種方法,所以(7/2D)(7D/2)然後使用

Float result = e.evaluate(null).floatValue();