簡體   English   中英

將字符串數組轉換為double數組

[英]Convert array of string to array of 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 []'

你可以使用Linq

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

您收到錯誤是因為您嘗試將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();

唯一匹配的Convert.ToDouble重載是接收Object重載。 與所有其他ToDouble重載一樣,此函數返回double

public static double ToDouble(
    Object value
)

因此,您嘗試將double賦值給double[] ,編譯器會告訴您它不能這樣做。

當然,如果你曾經將你的string[]數組傳遞給Convert.ToDouble重載,它將因運行時錯誤而失敗,因為Convert.ToDouble期望接收單個值,並返回單個值。 它只是不會在一次調用中轉換多個值。

您需要做的是將文件中的每一行轉換為double。 一種有效的方法是使用Linq查詢,如各種其他答案所示。

你可以循環遍歷字符串數組並使用Double.Parse或Double.TryParse(如果你的字符串不能解析為數組中的雙精度數)。

像(未經測試)的東西:

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);
    }
}

那是因為Convert.ToDouble返回一個雙精度值,左側有double [](雙精度變量數組)。

嘗試改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM