Формат XSL-число без округления
Есть ли что-то похожее на format-number в 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 (потому что нет ".") И не добавит ноль к концу 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 ответ
Решение
<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
-