2

JEXL 评估返回 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

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

4

2 回答 2

3

7/2表达式将计算为 int 结果,因此无法将 Integer 转换为 Float,如果您希望它产生浮点数,则需要将表达式更改为7 / 2.0F

于 2014-12-23T20:12:12.200 回答
1

为了准确起见,您必须将任何参数转换为 Float,因此请使用其中任何一个(7 / 2F)(7F / 2).

但是,由于 Java 的自动拆箱,您可以在初始代码中避免异常,但不幸的是,如果您使用

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

另一种可行的方法是强制转换为 Double,(7 / 2D)然后(7D / 2)使用

Float result = e.evaluate(null).floatValue();
于 2014-12-23T20:21:03.500 回答