XSL格式编号,没有舍入

sig*_*i13 3 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')" />
Run Code Online (Sandbox Code Playgroud)

这个连接子字符串混乱不适用于5(因为没有".")并且不会在14.6结束时添加零

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

我不得不做一个凌乱的事情:

<xsl:choose>
    <xsl:when test=""></xsl:when>
    <xsl:otherwise></xsl:otherwise>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)

非常感谢提前!

Dav*_*sle 8

<xsl:value-of select="<xsl:value-of 
Run Code Online (Sandbox Code Playgroud)

格式不正确,因此不会通过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>
Run Code Online (Sandbox Code Playgroud)

哪个产生

-
5.00
-
14.60
-
1.37
-
Run Code Online (Sandbox Code Playgroud)