Spring Expression(SpEL) - 舍入

问题描述 投票:0回答:1

有没有办法在使用SpEL评估数学运算时指定舍入精度?例如

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

或者这是SpEL的限制?

谢谢

spring-el
1个回答
1
投票

这对我有用:

"2.0/3"

结果是0.6666666666666666

是否有意义?

getValue(Double.class)的点在这里被消除,因为你的2/3只是两个整数之间的运算,结果也是一个整数 - 0。只有在此之后,这个结果才会转换为预期的双倍作为0.0

你需要在表达式中明确说明你将要处理双打。

您可以将此视为限制,但getValue(Double.class)不是像Java中那样的强制转换操作。这是一个转换后的。因此,精度只会丢失,因为无论如何你的表达式都会计算为整数。

© www.soinside.com 2019 - 2024. All rights reserved.