我需要根据指定的小数位数进行格式化。
例如:值=0.012877 decimalPlaces=3
format-number(value,'how to declare here based on specified decimal places')
我知道一般格式: format-number(value,'0.00') 但这里的小数位是固定的,但在我的情况下,它会根据我的小数位而改变,所以请任何人帮助我。
谢谢,@nag
以下序列构造函数...
<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 的最大范围一样多的零。
在 2.0 中,更直接的方法是
round-half-to-even($number, $decimalPlaces)
这是一个简单的 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