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
我可以更改设置以返回浮动吗?
答案 0 :(得分:3)
7/2
表达式将计算为int结果,因此无法将Integer转换为Float,如果您希望将其转换为float,则需要将表达式更改为7 / 2.0F
答案 1 :(得分:1)
为了准确起见,您必须将任何参数转换为Float,因此请使用(7 / 2F)
或(7F / 2)
中的任何一个。
但是,由于Java的自动拆箱,您可以在初始代码中避免异常,但遗憾的是,如果您使用
,则会失去精确度Float result = (float)e.evaluate(null);
另一种方法是投射到Double,所以(7 / 2D)
或(7D / 2)
然后使用
Float result = e.evaluate(null).floatValue();