我想使用Dataweave将小数(78.22)转换为整数(78)。
<root>
<MoneyAmountRequired>78.22</MoneyAmountRequired>
</root>
我尝试如下,如果我添加默认值0
则不起作用moneyAmountRequired: payload.root.MoneyAmountRequired as :number{format: "0"} default 0
有人可以指出为什么当默认值为0时它不起作用。
谢谢!
答案 0 :(得分:2)
使用dataweave的floor函数。
{
root: {
MoneyAmountRequired: floor payload.root.MoneyAmountRequired
}
}
答案 1 :(得分:0)
您可以尝试以下方法: -
moneyAmountRequired: payload.root.MoneyAmountRequired as :string {format: "0"}as :number default 0
在这里,您需要先将其转换为字符串as :string
,然后转换为数字as :number
这是它似乎工作的唯一方式!!
参考: - Mule Dataweave format :number
答案 2 :(得分:0)
尝试myvalue:removeDecimal(28.23)
答案 3 :(得分:0)
这对我有用。
moneyAmountRequired: payload.root.MoneyAmountRequired as :number {format: "##,##"} as :string {format: "##"} as :number
希望这有帮助。
答案 4 :(得分:0)
检查一下: %dw 1.0 %输出应用程序/ java
数据用&#34;&#34;
替换正则表达式答案 5 :(得分:0)
((payload.root.MoneyAmountRequired as :string) splitBy '.')[0] as :number
如果您更喜欢使用某个功能,那么:
%function truncateDecimals(d) ((d as :string) splitBy '.')[0] as :number when d != null otherwise d
---
{value: truncateDecimals(payload.root.MoneyAmountRequired)}
答案 6 :(得分:0)
在格式化数字之后,它确实是一个字符串,但是您将其默认为数字0而不是将其默认为字符串“0”。但是,如果'as:number'在变量为null时没有失败,那就足够了,这首先是你需要默认值的原因。因此,在将其转换为数字之前将其默认为:
moneyAmountRequired: (payload.root.MoneyAmountRequired default "0") as :number{format: "0"}
希望这会回答你关于默认0无效的问题。
答案 7 :(得分:-1)
将此用于
%dw 1.0
{ value:moneyAmountRequired:floor payload.root.MoneyAmountRequired as:number default 0 }