Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mule ESB,在JSON数组中添加数字时出现问题_Json_Expression_Mule_Esb - Fatal编程技术网

Mule ESB,在JSON数组中添加数字时出现问题

Mule ESB,在JSON数组中添加数字时出现问题,json,expression,mule,esb,Json,Expression,Mule,Esb,我在数据库连接节点中使用以下动态查询(即使我可以使用准备好的stmt): SELECT BALANCE FROM xxx.TAB #[message.payload] 我在SetPayload命令中有以下表达式,该命令在Datbase连接节点之后立即运行: SELECT BALANCE FROM xxx.TAB #[message.payload] 我从curl得到了如下的反应: [{"BALANCE":111.11},{"BALANCE":222.12},{"BALANCE":444.

我在数据库连接节点中使用以下动态查询(即使我可以使用准备好的stmt):

SELECT BALANCE FROM xxx.TAB
#[message.payload]
我在SetPayload命令中有以下表达式,该命令在Datbase连接节点之后立即运行:

SELECT BALANCE FROM xxx.TAB
#[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;
我再次运行curl,但这次我得到以下结果:

777.5299999999999994315658113919199
事实上,答案应该是777.53

这些数据怎么了

有办法解决这个问题吗


谢谢

这是因为该值是浮点值或双精度值。看看下面的例子:

有点乱,但有点像:

sum = 0;
foreach (row : message.payload) {
  sum += row['BALANCE'];
}
message.payload = new java.text.DecimalFormat("#.##").format(sum);