2016-01-20 56 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)"/>