2016-01-20 135 views
1

时如何保留小数点格式我需要添加totalPackageQuantity,totalGrossVolume和totalGrossWeight使用SUM函数

<packageTotal> 
    <packageTypeCode>BX</packageTypeCode> 
    <totalPackageQuantity>3</totalPackageQuantity> 
    <totalGrossVolume measurementUnitCode="CBM">0.026000</totalGrossVolume> 
    <totalGrossWeight measurementUnitCode="KGM">2.880000</totalGrossWeight> 
</packageTotal> 
    <packageTotal> 
    <packageTypeCode>BX</packageTypeCode> 
    <totalPackageQuantity>3</totalPackageQuantity> 
    <totalGrossVolume measurementUnitCode="CBM">0.026000</totalGrossVolume> 
    <totalGrossWeight measurementUnitCode="KGM">2.880000</totalGrossWeight> 
</packageTotal> 

的每次出现在上面的XML结构我的期望值为每个

5.760000(用于totalGrossWeight )

0.052000(用于totalGrossVolume)

我目前使用这个

sum(packageTotal/totalGrossWeight) 

使用总和函数它剥离一些十进制值,我需要的十进制格式是原样。如果只有一次发生,价值将会保持不变。

+0

不知道你的问题是。 'sum()'的结果当然是一个数字。使用'format-number()'函数以任何您需要的方式格式化数字。 –

+0

@ michael.hor257k对不起,如果我混淆你我重新表达了它,希望现在清楚。谢谢。 –

+0

我没有看到任何新东西。您是否事先知道所需的精度,还是可以根据具体情况改变? –

回答

1

不可能“保留”格式,因为给定的值必须转换为数字,然后才能汇总 - 而且数字没有格式。

如果您知道所需的精度为六个小数位,然后用简单:

<xsl:value-of select="format-number(sum(packageTotal/totalGrossWeight), '0.000000')"/> 

如果需要恢复原始格式动态,请尝试:

<xsl:variable name="format" select="translate(packageTotal[1]/totalGrossWeight, '123456789', '000000000')" /> 
<xsl:value-of select="format-number(sum(packageTotal/totalGrossWeight), $format)"/>