有多种方法可以进行此提取:
I. 使用数字的字符串表示:
concat('.',substring(substring-after($x, '.'), 1, 2))
二、使用标准数学函数:
$x - floor($x)
这将计算为任何正数的小数部分$x
。
使用以下函数之一:format-number()
, round()
, round-half-to-even()
(仅 XPath 2.0 / XSLT 2.0 可用的最后一个函数)将其四舍五入到小数点后两位。
在 XSLT 1.0 中,从正数中准确获取小数点后两位小数的数字的一种方法(截断不四舍五入)是:
format-number(
floor(100* $x) div 100
-
floor(floor(100* $x) div 100),
'.00'
)
以下是所描述方法的完整示例:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:value-of select=
"concat('.',substring(substring-after(0.12543, '.'), 1, 2))"/>
=========
<xsl:value-of select=
"format-number(0.12543, '.00')"/>
=========
<xsl:value-of select=
"format-number(
floor(100* 999.12543) div 100
-
floor(floor(100* 999.12543) div 100),
'.00'
)
"/>
</xsl:template>
</xsl:stylesheet>
当将此转换应用于任何 XML 文档(未使用)时,结果是:
.12
=========
.13
=========
.12