2

指定された小数点以下の桁数に基づいてフォーマットする必要があります。

例: value=0.012877 decimalPlaces=3

format-number(value,'how to declare here based on specified decimal places')

私は一般的な形式を知っています: format-number(value,'0.00') ここでは小数点以下の桁数は固定されていますが、私の場合は小数点以下の桁数によって変わるので、誰か助けてください。

ありがとう、@nag

4

3 に答える 3

2

次のシーケンス コンストラクターは...

<xsl:variable name="decimalPlaces" select="3" />
<xsl:value-of select="format-number(0.012877, substring('0.0000000000000',1,$decimalPlaces+2))"/>

...放出...

0.013

...文字列として。

value-of 命令では、$decimalPlaces の最大範囲と同じ数のゼロを書き込みます。

于 2012-09-04T07:03:29.557 に答える
1

2.0 では、より直接的なアプローチが

round-half-to-even($number, $decimalPlaces)
于 2012-09-04T09:54:51.867 に答える
0

以下は、ゼロの (潜在的に無制限の) 文字列を必要としない単純な XSLT 1.0 ソリューションです。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:param name="pNum" select="0.012877"/>
 <xsl:param name="pPrec" select="3"/>


 <xsl:template match="/">
   <xsl:value-of select="substring-before(concat($pNum, '.'), '.')"/>

   <xsl:if test="contains($pNum, '.')">
    <xsl:text>.</xsl:text>
     <xsl:value-of select="substring(substring-after($pNum,'.'), 1, $pPrec)"/>
   </xsl:if>
 </xsl:template>
</xsl:stylesheet>

この変換が任意の XML ドキュメント (使用されていない) に適用されると、必要な正しい結果が生成されます。

0.012
于 2012-09-04T13:10:23.580 に答える