XSL 将科学记数法转换为数字

Posted

技术标签:

【中文标题】XSL 将科学记数法转换为数字【英文标题】:XSL Convert Scientific notation to number 【发布时间】:2021-12-23 20:09:40 【问题描述】:

我正在使用 XSL 2.0。我有以下$intTOTAL,我将其转换为毫秒。但是这个输出是用香味符号表示的。我如何将其转换为没有科学记数法的普通数字

<xsl:variable name="intTotal" select="((number($timeINTSEC)*60)*1000 + number($timeINTMSEC))"/>
<TEST><xsl:value-of select="number($intTotal)"/></TEST>

这是我得到的输出

 <TEST>1.14E6</TEST>

【问题讨论】:

使用xs:decimalxs:integer代替默认的xs:doublenumber),也可以考虑使用format-number 【参考方案1】:

扩展 Martin 的评论,number() 函数转换为 xs:doublexs:double 的默认输出格式是 1e-6 到 1e6 范围之外的值的科学计数法。

您可以使用xs:decimal() 函数代替number()xs:decimal 而不是xs:double 中进行算术运算,或者您可以使用@987654329 覆盖xs:double 值的格式化方式@函数。

顺便说一句,在number($intTotal) 中调用number() 是多余的,因为该值已经是xs:double。使用as 属性声明变量的类型总是一个好主意,这样读者就可以清楚地知道发生了什么。

【讨论】:

以上是关于XSL 将科学记数法转换为数字的主要内容,如果未能解决你的问题,请参考以下文章

flutter - 将数字转换为科学记数法并获得指数 flutter

Freemarker:将日期从科学记数法转换为数字

将不同的数字转换为小数 C#(科学记数法到十进制)

如何将科学数字转换为一般数字

科学记数法如何批量转换成正常的文本或者数字

MongoDB以科学计数法将数字转换为字符串