使用SpEL评估数学运算时,是否可以指定舍入精度? 例如
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("2/3");
exp.getValue(Double.class); //returns 0.0 instead of 0.666666667
这是SpEL的限制吗?
谢谢
答案 0 :(得分:1)
这对我有用:
"2.0/3"
结果为0.6666666666666666
。
这有意义吗?
此处消除了getValue(Double.class)
的点,因为您的2/3
只是两个整数之间的一个运算,结果也是一个整数-0
。
而且只有在此之后,此结果才会以0.0
的形式转换为预期的两倍。
您需要在表达式中明确表示要处理双打。
您可能会认为这是一个限制,但是getValue(Double.class)
不是像Java中的 casting 操作。这是转换后的内容。因此,精度会丢失,因为您的表达式无论如何都要计算为整数。