有没有办法在使用SpEL评估数学运算时指定舍入精度?例如
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("2/3");
exp.getValue(Double.class); //returns 0.0 instead of 0.666666667
或者这是SpEL的限制?
谢谢
这对我有用:
"2.0/3"
结果是0.6666666666666666
。
是否有意义?
getValue(Double.class)
的点在这里被消除,因为你的2/3
只是两个整数之间的运算,结果也是一个整数 - 0
。只有在此之后,这个结果才会转换为预期的双倍作为0.0
。
你需要在表达式中明确说明你将要处理双打。
您可以将此视为限制,但getValue(Double.class)
不是像Java中那样的强制转换操作。这是一个转换后的。因此,精度只会丢失,因为无论如何你的表达式都会计算为整数。