2013-08-31 22 views
1

我有一個web應用程序,用戶可以改變他們的語言環境,但是當用戶更改區域設置加拿大法語「FR-CA」雙轉換拋出無效的格式字符串錯誤。什麼情況是,我從數據庫,在那裏雙重價值出來作爲字符串e.g「232.33」得到了一些數據。問題是這樣的字符串不能轉換爲雙用解析或任何其變種的...我不知道某些人能夠闡明如何解析這個雙重一些光,使FR-CA語言環境讓我得到雙倍d = 232.33本地FR-CA語言環境和問題與雙

感謝

回答

2

ParseToString方法是特定的文化,因爲你可能已經注意到。

如果你總是期待這些是在固定區域性(格式的232.33,而不是232,33)

您可以使用Parse過載,讓你指定的數字格式

decimal myDecimal = decimal.Parse("232.33", CultureInfo.InvariantCulture); 

同樣爲十進制轉換爲字符串

decimal myDecimal = 232.33m; 

string myString = myDecimal.ToString(CultureInfo.InvariantCulture); // "232.33" regardless of current threads culture 

見資源:

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.invariantculture.aspx

稍微偏離主題,但應將小數點存儲在數據庫中作爲正確的數字類型而不是字符串。這樣,您就可以使用總量和數學在查詢中如果需要的話,再加上你得到更好的存儲優化,你將不必解析字符串。