2013-07-16 36 views
2

如何指定我的decimal.Parse必須始終期望接收帶'。'的字符串。像「4.75」不管電腦的系統設置是什麼?c#double.parse()總是使用a。期間不逗號

我正在閱讀excel文件,它給了我一個'。'的價值。我看到,如果我在我的筆記本電腦,則拋出和錯誤運行我的程序,因爲它需要一個「」

我可以使用:

string tmp1 = tmp[2].Replace('.', ','); 

但後來很明顯,如果我的電腦想要一個‘’。那麼它會給出一個錯誤。

我最好的選擇是什麼?

回答

11

參見:Double.Parse

使用此重載你的情況CultureInfo.InvariantCulture指定IFormatProvider

var value = double.Parse(tmp[2], CultureInfo.InvariantCulture); 

但是,如果您打算讓您的過程持久,我會推薦Double.TryParse

double value; 

if(!double.TryParse(tmp[2], 
    NumberStyles.None, 
    CultureInfo.InvariantCulture, 
    out value)) 
{ 
    // error handling 
} 
3

你可以使用的Decimal.Parse過載,這將允許你指定一個文化:

decimal value = decimal.Parse(tmp[2], CultureInfo.InvariantCulture);