代码之家  ›  专栏  ›  技术社区  ›  Vishal

如何将字符串列表转换为双精度?

  •  6
  • Vishal  · 技术社区  · 14 年前

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

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

    无法将类型“string”转换为“double”

    我读到一些东西 similiar 将int转换为double…但是我有一个字符串列表,需要将其转换为double列表,ConvertAll()也不能使用Select扩展方法。谁能帮帮我吗。

    5 回复  |  直到 7 年前
        1
  •  20
  •   Mark Byers    14 年前

    如果您使用的是.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
  •  4
  •   Andreas Rehm    14 年前

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

    请注意,解析double和float是很复杂的-请想想这个:

    -&燃气轮机;不同的区域设置

        3
  •  1
  •   Muad'Dib    14 年前

    您可以使用列表的ForEach方法

    List<double> dbl= new List<double>;
    stringList.ForEach( str=> dbl.Add( double.parse( str ) ) );
    
        4
  •  0
  •   AllenG    14 年前

    这个怎么样?

    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
  •  0
  •   Prasun Hazra    8 年前

    列出tmpDouble=tmpString.Select(x=>(double?)Convert.ToDouble(x)).ToList();