spring-el - 弹簧表达式 (SpEL) - 舍入
问题描述
使用 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
。并且只有在此之后,此结果才会转换为预期的 double 作为0.0
.
您需要在表达式中明确说明您将处理双打。
您可能会认为这是一个限制,但getValue(Double.class)
它不像 Java 中的强制转换操作。这是转换后的。因此精度会丢失,因为您的表达式无论如何都会计算为整数。
推荐阅读
- bash - tr 用 66 和 99 引号翻译字符问题“”
- javascript - Angular: Does anyone know how to delay a for loop in Angular?
- plot - How do I add a box explaining which line belongs to which function?
- json - Scrapy json output missing comma
- c# - 我如何阅读这一行?
- java - 将 ArrayList 拉入相同类型的 2D ArrayList 时出现索引越界错误
- powershell - 如何使用 PowerShell 根据文件名移动文件?
- javascript - 从 C# TcpListener 向 javascript WebSocket 发送数据
- r - knit to PDF not working R V4.0.0 RStudio V1.2.5042
- python - *variable.shape 在 python 中是什么意思