我的 XML 中有以下值-1.8959581529998104E-4
。我想将其格式化为使用 XSL 给我的确切数字-0.000189595815299981
.
format-number(-1.8959581529998104E-4,'0.000000;-0.000000') gives me NaN.
有任何想法吗?
XSLT 1.0 不支持科学计数法。
This: number('-1.8959581529998104E-4')
结果:NaN
This: number('-0.000189595815299981')
结果:-0.000189595815299981
XSLT 2.0 支持科学计数法
This: number('-1.8959581529998104E-4')
结果:-0.000189595815299981
EDIT:一个非常简单的 XSLT 1.0 解决方法:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="number[substring-after(.,'E')]">
<xsl:variable name="vExponent" select="substring-after(.,'E')"/>
<xsl:variable name="vMantissa" select="substring-before(.,'E')"/>
<xsl:variable name="vFactor"
select="substring('100000000000000000000000000000000000000000000',
1, substring($vExponent,2) + 1)"/>
<xsl:choose>
<xsl:when test="starts-with($vExponent,'-')">
<xsl:value-of select="$vMantissa div $vFactor"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$vMantissa * $vFactor"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
通过此输入:
<number>-1.8959581529998104E-4</number>
Output:
-0.00018959581529998104
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)