Java JEXL评估返回值int

Java JEXL评估返回值int,java,jexl,Java,Jexl,JEXL evaluate返回int而不是float: 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 我可以更改设置以

JEXL evaluate返回int而不是float:

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

我可以更改设置以返回浮点吗?

7/2表达式将计算为int结果,因此无法将整数转换为浮点,如果要使其产生浮点,则需要将表达式更改为7/2.0F

要准确,必须将任何参数转换为浮点,因此使用这些7/2F或7F/2中的任何一个

然而,由于Java的自动取消装箱功能,您可以避免初始代码中出现异常,但如果使用

Float result = (float)e.evaluate(null);
另一种可行的方法是将其转换为双倍,因此7/2D或7D/2,然后使用

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

您能尝试将表达式更改为7/2.0吗?似乎更好,我现在明白了:java.lang.ClassCastException:java.lang.Double不能转换为java.lang.Float,但我可以使用result.floatValue将其转换。但是很糟糕,因为现在我必须创建一个方法来添加小数。尝试更改为7/2.0F