使用 SpEL 评估数学运算时是否有办法指定舍入精度?
例如
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("2/3");
exp.getValue(Double.class); //returns 0.0 instead of 0.666666667
或者这是 SpEL 的限制?
Thanks
这对我有用:
"2.0/3"
结果是0.6666666666666666
.
是否有意义?
要点是getValue(Double.class)
在这里被消除,因为你的2/3
只是两个整数之间的运算,结果也是一个整数 -0
。
并且只有在此之后,该结果才会转换为预期的双精度值0.0
.
您需要在表达式中明确表示您将处理双打。
您可能会认为这是一个限制,但是getValue(Double.class)
不是一个casting像Java中一样操作。这是一个转换后的过程。因此,精度会丢失,因为您的表达式无论如何都会计算为整数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)