XSL格式编号,没有舍入

时间:2013-01-15 21:02:07

标签: xslt rounding

在XSL中是否有类似于格式编号的内容可以采用数字并将其格式化为'#0.00'而不是围绕它?

所以,

  • 5将变为5.00
  • 14.6将变为14.60
  • 1.375将变为1.37

格式化数字不起作用,因为它会在1.375到1.38之间

<xsl:value-of select="format-number(MY_NUMBER, '#0.00')" />

这个连接子字符串混乱不会工作5(因为没有&#34;。&#34;)并且不会在14.6结束时添加零

<xsl:value-of select="concat(substring-before(MY_NUMBER,'.'), '.',  substring(substring-after(MY_NUMBER,'.'),1,2))" />

我将不得不做一个混乱的事情:

<xsl:choose>
    <xsl:when test=""></xsl:when>
    <xsl:otherwise></xsl:otherwise>
</xsl:choose>

提前非常感谢!

1 个答案:

答案 0 :(得分:8)

<xsl:value-of select="<xsl:value-of 

格式不正确,因此无法通过XML解析器。

我假设你只限于XSLT 1,所以就像这样

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


<xsl:template match="/">

-
<xsl:call-template name="f">
<xsl:with-param name="n" select="5"/>
</xsl:call-template>
-
<xsl:call-template name="f">
<xsl:with-param name="n" select="14.6"/>
</xsl:call-template>
-
<xsl:call-template name="f">
<xsl:with-param name="n" select="1.375"/>
</xsl:call-template>
-
</xsl:template>

<xsl:template name="f">
<xsl:param name="n"/>
<xsl:value-of select="format-number(floor($n*100) div 100, '#0.00')"/>
</xsl:template>

</xsl:stylesheet>

产生

-
5.00
-
14.60
-
1.37
-