2

我需要根据指定的小数位数进行格式化。

例如:值=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 回答