我在Database COnnection节点中使用以下动态查询(即使我可以使用准备好的stmt):
SELECT BALANCE FROM xxx.TAB
我在SetPayload命令中有以下表达式,它在数据库连接节点之后立即运行:
#[message.payload]
我从curl得到以下回复:
[{"BALANCE":111.11},{"BALANCE":222.12},{"BALANCE":444.30}]
所以我修改了流程,在数据库连接节点和SetPayload节点之间放置了一个表达式节点,其中包含以下表达式:
sum = 0;
foreach (row : message.payload) {
sum += row['BALANCE'];
}
message.payload = sum;
我再次运行卷曲,但这次我得到以下内容:
777.5299999999999994315658113919199
实际上,答案应该是777.53
这些数据怎么了?
有没有办法解决这个问题?
由于
答案 0 :(得分:2)
这是因为值是Float或Double。看一下类似的内容:http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html
有点凌乱,但有点像:sum = 0;
foreach (row : message.payload) {
sum += row['BALANCE'];
}
message.payload = new java.text.DecimalFormat("#.##").format(sum);