如何将字符串列表转换为双精度?
编辑:我之前尝试过这两种方法 –
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();