我現在面臨一個問題,當字符串的字符串值轉換爲雙精度值。 如:Convert.ToDouble拋出錯誤的法語系統
string val="2.0";
double dval=Convert.ToDouble(val);
在法國的系統上執行這個代碼,因爲在法國引發了錯誤,他們使用,(逗號)而不是(點)。
任何解決方案???
我現在面臨一個問題,當字符串的字符串值轉換爲雙精度值。 如:Convert.ToDouble拋出錯誤的法語系統
string val="2.0";
double dval=Convert.ToDouble(val);
在法國的系統上執行這個代碼,因爲在法國引發了錯誤,他們使用,(逗號)而不是(點)。
任何解決方案???
Convert.ToDouble(val, System.Globalization.CultureInfo.InvariantCulture);
或
Double.Parse(val, System.Globalization.CultureInfo.InvariantCulture);
使用正確的文化解析數據。
如果 「2.0」 來自一些標準源(即XML)使用CultureInfo.InvariantCulture
(如abatishcev建議的)。
如果「2.0」從已知的文化來自於用戶的輸入 - 使用文化(樣品爲EN-US):
double dval = Double.Parse("2.0", new CultureInfo("en-US"));
如果是從本地用戶輸入應該是在正確的用戶的文化設置 - 「fr-FR」應該是「2,0」。
如果你不知道用什麼文化精神的進入「2.0」值最好是簡單地停下來思考應該用什麼樣的文化。
'CultureInfo.InvariantCulture'要便宜並具有分隔爲一個點的規範,但仍然是一個很好的和有效的點。 – abatishchev
還要幫你解析成功,或者您需要'val'有逗號? –
它引發錯誤的原因是因爲它期望字符串在當前的文化中。如果字符串來自用戶輸入(例如,法國人會輸入2,0),則這可以按預期工作。如果字符串來自其他地方(例如數據庫),您將知道該字符串是什麼文化。所以它有點取決於你想如何表現。 – craftworkgames