有不同的方式來做到這一點的提取:
一,使用數字的字符串表示:
concat('.',substring(substring-after($x, '.'), 1, 2))
II。使用標準的數學函數:
$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
非常好!謝謝 - 像魅力一樣工作 - 並一如既往地教我一些技巧。 – Surge 2012-07-06 06:18:48
@Surge:不客氣。 – 2012-07-06 12:00:04
這是非常有用的,因爲Qt目前不提供'format-number()'。 – 2014-08-10 23:41:55