Mule数据编织格式:数字
我遇到了一个问题,试图将字符串解析为双倍。这是一个示例代码,它返回的是一个整数而不是类型:double有什么想法吗Mule数据编织格式:数字,mule,anypoint-studio,dataweave,Mule,Anypoint Studio,Dataweave,我遇到了一个问题,试图将字符串解析为双倍。这是一个示例代码,它返回的是一个整数而不是类型:double有什么想法吗 { "data": "22" as :number { format: "##.##" } } 我认为这更多是为了格式化字符串。对于小数点,请尝试以下操作: { "data": "22" as :number {format: ".00"} } 这个,也只有这个,对我有效 %dw 1.0 %output application/json --- {
{
"data": "22" as :number { format: "##.##" }
}
我认为这更多是为了格式化字符串。对于小数点,请尝试以下操作:
{
"data": "22" as :number {format: ".00"}
}
这个,也只有这个,对我有效
%dw 1.0
%output application/json
---
{
data: "22" as :number as :string {format: ".00"} as :number
}
格式似乎只在从数字转换为字符串时添加零。
如果“22”已经是一个数字,你就不需要第一个:数字转换
data: 22 as :string {format: ".00"} as :number
后一个数字转换使其以浮点形式输出。否则,您将得到一个字符串,根据主机区域设置进行格式化
小心。当使用%output text/json
时,在某些情况下,上述代码将生成22.0而不是22.00。我使用的是:
%output application/json
%type currency = :string { format: "###,##0.00"}
%function toLocalCurrency (currency) currency replace "." with "#" replace "," with "." replace "#" with ","
---
{
usCurrencyWithOneDecimal: 900000.1 as :currency,
brCurrency: toLocalCurrency(900000.1 as :currency),
usCurrencyWithTwoDecimal: 900000.12 as :currency,
usCurrencyWithThreeDecimal: 900000.124 as :currency,
usCurrencyWithThreeDecimalRounding: 900000.125 as :currency,
usCurrencyZero: 0 as :currency
}
输出为:
{
"usCurrencyWithOneDecimal": "900,000.10",
"brCurrency": "900.000,10",
"usCurrencyWithTwoDecimal": "900,000.12",
"usCurrencyWithThreeDecimal": "900,000.12",
"usCurrencyWithThreeDecimalRounding": "900,000.12",
"usCurrencyZero": "0.00"
}
这适用于所有输出类型application/json等,但不适用于application/java。我猜你在用什么?