gpt4 book ai didi

xml - 将科学计数法中的字符串转换为 XPath 中的数字格式

转载 作者:数据小太阳 更新时间:2023-10-29 01:50:11 27 4
gpt4 key购买 nike

我有这个字符串:

8.1161E-002

这个字符串实际上是一个计算的结果(不幸的是结果被转换为字符串,我不能改变它)。

那么我怎样才能将这个字符串转换成类似00.081的格式呢?

我正在查看 XPath 引用,但我找不到例如 format() 函数。有没有办法在 XPath 中执行此操作?

最佳答案

XPath 1.0 解决方案

如果您受困于 XPath 1.0 并且您的输入格式为 (尾数 E+ 指数)或 (mantissa E- exponent) 你可以使用这个hack(这不是很好但可以胜任完成):

translate(
concat(
number(substring('100000000000000',1,number(substring-after(/number,'E+'))+1))*number(substring-before(/number,'E+')),
number(concat(substring('0.00000000000000',1,number(substring-after(/number,'E-'))+1),'1'))*number(substring-before(/number,'E-')),
number(substring('100000000000000',1,number(substring-after(/number,'e+'))+1))*number(substring-before(/number,'e+')),
number(concat(substring('0.00000000000000',1,number(substring-after(/number,'e-'))+1),'1'))*number(substring-before(/number,'e-')),
/number[not(contains(.,'E')) and not(contains(.,'e'))]
), 'Na', ''
)

它提取尾数(Ee之前的字符串),然后通过移动一串将由指数 确定的位置 的数量归零,然后将其与尾数 相乘。它分别处理正指数或负指数的情况。由于 XPath 中没有 if,它将两个结果连接为字符串,并允许其中一个产生“NaN”,稍后将其删除。

例如,如果指数+2,它将从第一个或第三个字符串中获取100 子字符串。如果它是 +5 它将得到 10000 如果它是 -3 它将从中提取 0.001 子串第二或第四弦。然后它将那个数字乘以尾数

因为您将有 e+e-,其中之一将是字符串 NaN,然后从最终字符串中删除使用 translate 函数(它删除所有 Na 字符,这些字符从不出现在十进制数或科学记数法中)。最后一个 concat 参数处理数字不是科学记数法的情况。

e 可以大写或小写。

限制:

  1. 如果你有正指数没有+
  2. ,它 不会工作
  3. 如果指数的绝对值大于 15,将显示不正确的结果。
  4. 如果您有十六进制值,它也会失败(因为任何 a 都将从最终结果中删除)。

将其应用于此文件:

<number>2.34</number>

它通常会读作:

2.34

但是 2.34e+5 将被读取为 2340002.34E-005 将变为 0.0000234

关于xml - 将科学计数法中的字符串转换为 XPath 中的数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23960064/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com