2016-02-11 82 views
-2

我想字符串轉換像".1"".2"等爲0.10.2轉換 「.1" ,」 0.2" 翻一番

我想:

Convert.ToDouble(".1") 

和崩潰。我明白爲什麼它崩潰,但我仍然需要將其轉換爲有效的雙數。我知道我可以通過分割字符串和解析來做到這一點,但是有沒有更好的方法?

+3

它不會「崩潰」,它拋出一個異常。您的語言環境是否使用逗號作爲小數點分隔符? – CodeCaster

+0

它甚至沒有做到這一點,[dotnetfiddle(https://dotnetfiddle.net/hnDW6c),你得到了什麼錯誤?這對我的作品 – Sayse

+0

@Sayse我收到「System.FormatException」 –

回答

5

Convert.ToDouble使用當前的文化設置默認

也許你目前的文化有不同的字符串比.作爲NumberDecimalSeparator

作爲一個解決方案,你可以使用已經.作爲NumberDecimalSeparatorInvariantCulture,文化或者你可以CloneCurrentCulture,設置它的NumberDecimalSeparator.並在Convert.ToDouble方法使用克隆培養(或double.Parse)作爲第二參數。

var d = double.Parse(".1", CultureInfo.InvariantCulture); 

var clone = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 
clone.NumberFormat.NumberDecimalSeparator = "."; 
var d = double.Parse(".1", clone); 
+0

也得到我的每一次... –

4

試試這個:

Double result = Double.Parse(".1", CultureInfo.InvariantCulture); 

通過specifing CultureInfo.InvariantCulture可以確保.是一個小數點分隔符。