我需要根据指定的小数位数进行格式化。
例如:value = 0.012877 小数位数= 3
format-number(value,'how to declare here based on specified decimal places')
我知道一般格式:格式编号(值,' 0.00')但这里小数位是固定的,但在我的情况下它会根据我的小数位改变,所以请任何人帮助我
谢谢, @nag
答案 0 :(得分:2)
以下序列构造函数......
<xsl:variable name="decimalPlaces" select="3" />
<xsl:value-of select="format-number(0.012877, substring('0.0000000000000',1,$decimalPlaces+2))"/>
... ... EMIT
0.013
......作为一个字符串。
在指令值中,写入与$ decimalPlaces的最大范围一样多的零。
答案 1 :(得分:1)
在2.0中,更直接的方法是
round-half-to-even($number, $decimalPlaces)
答案 2 :(得分: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