2016-09-30 58 views
4

我試圖將字符串轉換爲雙,我有這個值:53.095,並嘗試轉換爲雙象:Double.Parse不能讓逗號

string doub = "53.095"; 
var cv = Convert.ToDouble(doub); 

我得到:53095。爲什麼我沒有得到逗號?我錯過了什麼?

+0

也許這太問題可以幫助你:http://stackoverflow.com/questions/11560465/parse-strings-to-double-with-comma-and-point –

回答

9

我想這是因爲不同的國家處理逗號不同。例如,我國使用,代替。所以你必須知道字符串是如何格式化的。

string doub = "53.095"; 
var cv = double.Parse(doub, new CultureInfo("en-GB")); 

對於另一個本地化,這將工作。

string doub = "53,095"; // note , 
var cv = double.Parse(doub, new CultureInfo("sv-SE")); 

編輯:

如前所述king_nak,你將能夠使用CultureInfo.InvariantCulture,只要您使用的英式風格進行格式化。

它與英文相關,但不與 國家/地區相關聯。

string doub = "53.095"; 
string doub2 = "53,095"; 
var cv1 = double.Parse(doub, CultureInfo.InvariantCulture); // Works 
var cv2 = double.Parse(doub2, CultureInfo.InvariantCulture); // Does not work. 
+0

哦,謝謝,從未想過要這個。保存我的日子, – AgainMe

+2

我建議使用'CultureInfo.InvariantCulture'而不是GB-en –

+0

@king_nak的新信息,是的,這確實是一種替代方案。但是,取決於執行代碼的服務器,它可能不是您想要的。 http://stackoverflow.com/questions/9760237/what-does-cultureinfo-invariantculture-mean – smoksnes