繁体   English   中英

将具有科学记数法的字符串列表转换为十进制数

[英]Convert list of strings with scientific notation to decimal numbers

我有一个字符串列表(带科学记数法的数字),我想将其转换为实数; 我的想法是使用循环转换它:

    for (var i = 0; i < time.Count; i++)
    {
        timeD.Add(decimal.Parse(time[i], System.Globalization.NumberStyles.Any));
    }

但结果数字的值是错误的。 我的列表的值是:

7.6923076920E-10
1.5384615380E-09
3.2051282050E-09
4.8717948720E-09

output 是

7,6923076920
15,384615380
32,051282050
48,717948720

任何想法为什么会发生这种情况以及如何解决它?

您似乎有一个 CurrentCulture,其中 '.' 不是小数分隔符。 所以 7.6923076920E-10 与 76923076920E-10 相同。 尝试在解析时指定 CultureInfo.InvariantCulture:

 decimal.Parse(time[i], System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture)

如果您不关心全球化,您可以声明自己的 NumberFormatInfo

var nfi = new NumberFormatInfo();

因此,如果您输入的小数点分隔符是“.” 或“,”你可以设置它

nfi.NumberDecimalSeparator

然后你可以使用

var num = decimal.Parse(time[i], nfi);

CultureInfo.InvariantCulture 始终假定小数点分隔符为“.”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM