MuleSoft 读取 Excel 文件时更改十进制值

问题描述

我正在从 AWS S3 存储桶中读取 MuleSoft 中的 Excel (.xlsx) 文件,一旦我从 S3 存储桶中读取文件,我就会像这样获取 excel 文件的数据:

 %dw 2.0
output application/json

---

payload.parts pluck (value,key,index) -> 
        {
            (key) : { (read(value.content,'application/xlsx'))} 
        }

问题是,文件12.535中有一个值,它被读取为12.53499999。这在四舍五入时产生了问题,因为理想情况下,当我对小数进行四舍五入时,我应该得到 12.54 的值,但因此.5349999我得到的值是 12.53

如何确保 Mule 读取正确的值或解析正确的值?

使用 Mule 运行时 4.3.0。

解决方法

尝试将类型转换为字符串然后返回数字,例如:


 %dw 2.0
output application/json

---

payload.parts pluck (value,key,index) -> 
        {
            (key) : { ((read(value.content,'application/xlsx')) as String {format: "0:00"}) as Number 

,

excel的类似问题, 已经通过将值转换为数字然后转换为字符串格式来解决它

例如

What is the maximum parameter: 10000
[1,8,27,64,125,216,343,512,729,1000,1331,1728,2197,2744,3375,4096,4913,5832,6859,8000,9261]
729=1+216+512 => valid
5832=8+1728+4096 => valid
216=27+64+125 => valid
6859=27+1000+5832 => valid
1728=216+512+1000 => valid
8000=343+2744+4913 => valid
5832=729+1728+3375 => valid

这在真正有小数时保持精度。