2014-11-21 57 views
3

我得到了代表雙打的字符串值。 (f.e。「1.23」)。始終以「。」。如何編程一個獨立於語言的double.tryparse?

如果你運行該代碼:

double dDouble =0; 
string sDemo ="1.23"; 
double.TryParse(sDemo,out dDouble)); 

它將返回1.23到dDouble變種。

如果我切換到其他語言爲「,」爲「。」 ....我得到123.0作爲dDouble。

如何確保其始終1.23 ...

double dDouble =0; 
string sDemo ="1.23"; 
double.TryParse(sDemo,System.Globalization.NumberStyles.Any, 
     System.Globalization.CultureInfo.InvariantCulture, out dDouble)); 

,但我不能確定,如果這將永久解決問題。

我只是想

+1

用不同的語言表達不同的文化? – 2014-11-21 11:12:31

+3

使用InvariantCulture *是編寫數字和日期的區域無關轉換的推薦方式。 – 2014-11-21 11:14:53

+0

在結尾處('double.TryParse'和'double.ToString'),您需要使用相同的文化。 – 2014-11-21 11:20:53

回答

1

10年前我會解決它像這樣(不這樣做):

sDemo = sDemo.Replace(",","."); 

現在

// to string 
var text = someDouble.ToString(NumberFormatInfo.InvariantInfo); 
// and back 
var number = double.Parse(text, NumberFormatInfo.InvariantInfo); 

關鍵點是使用相同文化。如果您將值轉換爲內部使用(例如,將double值作爲文本的一部分傳遞) - 使用不變式文化。但是,如果您想將其顯示給用戶,然後閱讀用戶輸入,則仍然使用相同的文化:如果您沒有爲ToString指定文化,那麼請不要將其指定爲Parse,如果您這樣做,然後再做一次。

+0

呃......這個「。」 - >「,」反之亦然......是的,我早就這麼做了...... – 2014-11-21 13:42:06