Spring Expression(SpEL)-舍入

时间:2019-03-22 05:54:46

标签: spring-el

使用SpEL评估数学运算时,是否可以指定舍入精度? 例如

ExpressionParser parser  = new SpelExpressionParser();
Expression exp = parser.parseExpression("2/3");
exp.getValue(Double.class); //returns 0.0 instead of 0.666666667

这是SpEL的限制吗?

谢谢

1 个答案:

答案 0 :(得分:1)

这对我有用:

"2.0/3"

结果为0.6666666666666666

这有意义吗?

此处消除了getValue(Double.class)的点,因为您的2/3只是两个整数之间的一个运算,结果也是一个整数-0。 而且只有在此之后,此结果才会以0.0的形式转换为预期的两倍。

您需要在表达式中明确表示要处理双打。

您可能会认为这是一个限制,但是getValue(Double.class)不是像Java中的 casting 操作。这是转换后的内容。因此,精度会丢失,因为您的表达式无论如何都要计算为整数。