【问题标题】:How to convert list of strings to doubles?如何将字符串列表转换为双精度值?
【发布时间】:2011-03-22 21:12:36
【问题描述】:

编辑:我之前尝试过这两种方法-

List<double> doubleList =
stringList.ConvertAll(x => (double)x);

List<double> doubleList =
stringList.Select(x =>
(double)x).ToList();

得到了这个错误:

无法将类型'string'转换为'double'

我读到了一些 similiar 将整数转换为双精度的内容...但是我有字符串列表,我需要将其转换为双精度列表,并且 ConvertAll() 也无法使用 Select 扩展方法。谁能帮帮我。

【问题讨论】:

  • “ConvertAll() 对 Select 扩展方法都不起作用”——怎么了?编译器错误?例外?还有什么?可以提供代码吗?
  • 我收到错误 - 无法将类型 'string' 转换为 'double' 但 Mark 的回答有效!!
  • 您不能强制将字符串转换为双精度(字符串不实现显式转换为双精度 --> msdn.microsoft.com/en-us/library/xhbhezf4%28v=VS.80%29.aspx)。您只能将其 解析 使其翻倍,如以下答案所示。

标签: c# string list double


【解决方案1】:

如果您使用的是 .NET 3.5 或更高版本,则 select 方法应该可以工作:

List<double> result = l.Select(x => double.Parse(x)).ToList();

下面是一些示例代码:

List<string> l = new List<string> { (0.1).ToString(), (1.5).ToString() };
List<double> result = l.Select(x => double.Parse(x)).ToList();
foreach (double x in result)
{
    Console.WriteLine(x);
}

结果:

0,1 1,5

需要注意的一点是您使用哪种文化来解析字符串。例如,您可能希望使用采用文化的 Parse 重载并使用 CultureInfo.InvariantCulture

【讨论】:

    【解决方案2】:

    你可以使用 linq:

    List<double> myList = myStringlist.ConvertAll(item => double.Parse(item));
    

    请注意,解析双精度和浮点数很复杂 - 想想这个:

    100,00 100.00

    -> 不同的区域设置

    【讨论】:

      【解决方案3】:

      你可以使用 List 的 ForEach 方法

      List<double> dbl= new List<double>;
      stringList.ForEach( str=> dbl.Add( double.parse( str ) ) );
      

      【讨论】:

        【解决方案4】:

        这个怎么样?

        List<string> list = [your strings]
        List<double> newList = new List<double>();
        for(int i = 0; i < list.Count; i++)
        {
          double d = 0;
          if(!double.TryParse(list[i], d)) //Error
          newList.Add(d);
        }
        

        【讨论】:

          【解决方案5】:

          希望这可能有效: List tmpDouble = tmpString.Select(x => (double ?)Convert.ToDouble (x)).ToList();

          【讨论】:

            猜你喜欢
            • 2022-01-16
            • 1970-01-01
            • 2011-08-11
            • 1970-01-01
            • 2014-07-24
            相关资源
            最近更新 更多