指数表示法到整数表示法XSLT2.0

指数表示法到整数表示法XSLT2.0,xslt,xslt-2.0,Xslt,Xslt 2.0,是否可以使用XSLT2.0将以下指数表示法更改为整数表示法 2.0151109001E10 到 20151109001 我试过了 number(2.0151109001E10) 但它给了楠一个答案 编辑: XSLT: 输出: <a>2.0151109001E10</a> <b>2.0151109001E10</b> <c>2.0151109001E10</c> 2.0151109001E10 2.0151109

是否可以使用XSLT2.0将以下指数表示法更改为整数表示法

2.0151109001E10 到 20151109001

我试过了

number(2.0151109001E10)
但它给了楠一个答案

编辑: XSLT:


输出:

 <a>2.0151109001E10</a>
 <b>2.0151109001E10</b>
 <c>2.0151109001E10</c>
2.0151109001E10
2.0151109001E10
2.0151109001E10
下面的方法是可行的

<xsl:value-of select="xs:decimal(xs:double(translate($a, ',', '.')))"/>

您可以尝试将它们放在单引号中,如下所示:

number('7.2345E7')
给予


输入的真正问题不是指数符号,而是使用逗号作为小数点。XML仅将句点识别为十进制标记

尝试以下方法:

<xsl:value-of select="xs:decimal(xs:double(translate($a, ',', '.')))"/>

或:


您可以使用格式编号:

format-number(2.0151109001E10, '#')

我正在做数字(字符串(72345E7))。但事实并非如此working@Joe:-只需执行:
number('7.2345E7')
我进一步证实了我的问题72345e7来自哪里?@michael-数据是使用XSLTIf从Excel xml文件读取的如果给定的数字不包含逗号-如您编辑示例后所示-那么就没有理由使用
translate()
将其转换为句点。
<xsl:value-of select="xs:decimal(xs:double(translate($a, ',', '.')))"/>
<xsl:value-of select="format-number(translate($a, ',', '.'), '0')"/>
format-number(2.0151109001E10, '#')