如何在 IIB 中将字符串转换为带有两位小数的十进制
How to transform String to decimal with two fractional digits in IIB
我正在 IBM Integration Bus 中处理映射,我想将字段字符串从 DFDL 格式转换为带有两个小数位的十进制。但是我希望两个小数位出现,即使它们是零。
例如:
我在 DFDL 上的字符串:0058700
预期结果:587.00
我尝试了以下 xpath 代码
($valor cast as xs:decimal?) div 100
但是没用,没有显示小数点后两位
(即:587)
我还尝试用模式定义一个简单类型:
<simpleType name="D10">
<restriction base="decimal">
<totalDigits value="10"/>
<fractionDigits value="2"/>
<pattern value="[0-9]{1,12}[.][0-9]{2}"/>
</restriction>
</simpleType>
如果您的 DFDL 描述格式的字符串是“0058700”,但其逻辑值实际上是“587.00”,那么您需要使用 dfdl:textNumberPattern 属性 来告诉 DFDL 是这种情况. “####0V00”的模式应该可以解决问题。 'V' 表示(虚拟)小数点的位置。
我正在 IBM Integration Bus 中处理映射,我想将字段字符串从 DFDL 格式转换为带有两个小数位的十进制。但是我希望两个小数位出现,即使它们是零。
例如:
我在 DFDL 上的字符串:0058700 预期结果:587.00
我尝试了以下 xpath 代码
($valor cast as xs:decimal?) div 100
但是没用,没有显示小数点后两位 (即:587)
我还尝试用模式定义一个简单类型:
<simpleType name="D10">
<restriction base="decimal">
<totalDigits value="10"/>
<fractionDigits value="2"/>
<pattern value="[0-9]{1,12}[.][0-9]{2}"/>
</restriction>
</simpleType>
如果您的 DFDL 描述格式的字符串是“0058700”,但其逻辑值实际上是“587.00”,那么您需要使用 dfdl:textNumberPattern 属性 来告诉 DFDL 是这种情况. “####0V00”的模式应该可以解决问题。 'V' 表示(虚拟)小数点的位置。