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

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

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

并得到此错误:

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

我读到了类似于将int转换为双精度的类似内容…但我有一些字符串列表,我需要转换为双精度列表,而ConvertAll()不能同时使用Select扩展方法。 任何人都可以帮助我。

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

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

这是一些示例代码:

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

结果:

 0,1
 1,5

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

你可以使用linq:

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

请注意,解析双精度和浮点数很复杂 – 只需要想一想:

100,00 100.00

– >不同的区域设置

您可以使用List的ForEach方法

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

这个怎么样?

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

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