将字符串数组转换为double数组

时间:2014-06-02 13:57:15

标签: c# arrays string file double

我有一个文本文件(.txt) 带一些十进制数:

0.3125
0.3
0.181818181818182
0.333333333333333
0.210526315789474
0.181818181818182

我想把这些数字带到double的数组中。这是我的代码:

double[] f1 = Convert.ToDouble(File.ReadLines("decimal list.txt").ToArray());

但是我得到了

的错误
  

不能将'double'类型转换为'double []'

7 个答案:

答案 0 :(得分:9)

您可以使用 Linq

  Double fi[] = File.ReadLines("list of stopword.txt")
                    .Select(x => Double.Parse(x, CultureInfo.InvariantCulture))
                    .ToArray();

答案 1 :(得分:3)

File.ReadLines("decimal list.txt")
    .Select(l => Convert.ToDouble(l))
    .ToArray();

答案 2 :(得分:1)

您收到错误是因为您尝试将doubleConvert.ToDouble)分配给double[]变量。相反,你必须将每一行解析为double并创建一个数组。

您可以使用LINQ:

double value = 0;
double[] f1 = File.ReadLines("decimal list.txt")
    .Where(l => double.TryParse(l.Trim(), out value))  // skips invalid lines
    .Select(l => value)
    .ToArray();

答案 3 :(得分:1)

匹配的唯一Convert.ToDouble重载是one that receives Object。与所有其他ToDouble重载一样,此函数返回double

public static double ToDouble(
    Object value
)

您正在尝试将double分配给double[],编译器会告诉您它不能这样做。

当然,如果您确实将string[]数组传递给Convert.ToDouble重载,则会因运行时错误而失败,因为Convert.ToDouble期望接收单个值,并返回单个值值。它只是不会在一次调用中转换多个值。

您需要做的是将文件中的每一行转换为double。一种有效的方法是使用Linq查询,如各种其他答案所示。

答案 4 :(得分:0)

您可以循环遍历字符串数组并使用Double.Parse或Double.TryParse(如果您的字符串不能解析为数组中的双精度数)。

答案 5 :(得分:0)

像(未经测试)的东西:

string[] lines = File.ReadAllLines("decimal list.txt");
List<doulbe> values = new List<double>();

foreach(string line in lines)
{
    double value;

    if (double.TryParse(line, out value))
    {
        values.Add(value);
    }
}

答案 6 :(得分:0)

那是因为Convert.ToDouble返回一个双精度值,左侧有双[](双精度变量数组)。

尝试改为:

List<double> list = new List<double>();
foreach(string line in File.ReadLines("list of stopword.txt"))
  list.Add(double.Parse(line));