2015-04-02 145 views
0

我已經讀取了一個包含十進制數字的文件包含數字,例如:10.4轉換爲字符串數組。我想獲得一系列雙打。我的方法對數字工作,而小數部分而已,但對於那些小數給出以下錯誤:將字符串中的十進制數字轉換爲雙精度型

An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll Additional information: Input string was not in a correct format.

你有一些想法如何修改代碼以對所有正實數工作?

string[] lines = System.IO.File.ReadAllLines(fd.FileName); 
numbers_input = lines.Select(x => double.Parse(x)).ToArray(); 
+1

確保他們不是(y => y.Trim()。Length> 0).Select(x => double.Parse(x.Trim()))。ToArray() ; – TheRk 2015-04-02 17:28:20

回答

2

您應該考慮到區域設置。默認情況下,double.Parse與當前線程區域設置一起使用,該區域設置可能會指定與文件中使用的小數分隔符不同的小數分隔符。例如。一些文化中使用逗號(,),而其他人使用句號(。)

如果你的數據文件是好的,是用句點作爲小數點分隔符,那麼你可以使用

lines.Select(x => double.Parse(x, CultureInfo.InvariantCulture)).ToArray(); 
+0

非常感謝,它現在有效。 – kamila 2015-04-07 19:03:36

1

這很可能是一個文化問題。使用InvariantCulture進行解析。你的號碼有dot(。)有十進制運算符,它與當前文化的小數分隔符不同。

numbers_input = lines.Select(x => double.Parse(x, CultureInfo.InvariantCulture)) 
        .ToArray(); 
+0

是的,非常感謝。 – kamila 2015-04-07 19:02:58

相關問題