2010-04-22 40 views

回答

8

您將使用接受IformatProviderParse過載。

Double.Parse("23.56", new CultureInfo("...")) 

如果你不知道用來寫你創建一個NumberFormatInfo文件並配置它的文化,只要你喜歡:

var nfi = new NumberFormatInfo(); 

nfi.NumberDecimalSeparator = "."; 

var d = Double.Parse("23.56", nfi); 
+0

此分隔符爲我刪除了逗號,並且沒有添加點。我做錯了什麼? (談論'var nfi'解決方案) – Rob 2013-06-20 11:07:30

+0

@Robuust,NumberFormatInfo的默認構造函數基於不變文化,因此它已經使用dot作爲小數分隔符。在上面的示例中,它應該按照預期解析數字,我只重置該屬性以說明它是可寫的,並且可以根據需要對其進行配置。爲您提供一個提供您所面臨問題的詳細信息的新問題可能是最好的選擇。 – 2013-06-20 11:34:51

0

也可使用:

double.Parse((""+s).Replace(",","."), System.Globalization.CultureInfo.InvariantCulture) 

醜陋不堪,地獄,但這是.Net ... :)

2

這是我曾經這樣做,但我想我會使用NumberFormatInfo在將來 !

CultureInfo oldCulture = Thread.CurrentThread.CurrentCulture; 
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 

try 
{ 
    if (Thread.CurrentThread.CurrentCulture != null) 
    { 
    double d = Double.Parse("23.5"); 
    } 
} 
finally 
{ 
    Thread.CurrentThread.CurrentCulture = oldCulture; 
} 
+0

您可能會發現Raymond Chen的這一智慧有趣:[不要使用全局狀態來管理本地問題](http://blogs.msdn.com/b/oldnewthing/archive/2008/12/11/9193695的.aspx) – 2012-11-12 03:26:50