2011-10-07 32 views
3

我有一個字符串值爲「20.616378139」,當我嘗試使用Convert.ToDouble或Double.Parse進行轉換時,我得到20616378139.0 insted的正確值。C# - 將字符串轉換爲雙倍時出現意外結果

爲什麼會發生這種情況,應該如何解決?

+2

文化設置其中'.'是千位分隔符而不是小數點? –

+1

您能告訴我們產生錯誤結果的代碼嗎?你所描述的聽起來很不尋常。 –

+0

@AnonyPegram嗯,很好的電話...雖然在上面的例子中,它看起來更像是一個十億分隔符...:S –

回答

16

您可能生活在世界的一個小數點寫成逗號的地方。修復:

var str = "20.616378139"; 
var dbl = double.Parse(str, System.Globalization.CultureInfo.InvariantCulture); 
-2

Parse方法有一個重載,它提供某種選項參數;這是您可以指定的方式來處理科學記數法等。嘗試明確設置。如果可行,請查看您正在使用的默認文化信息設置。

+1

這次我不打算讓你失望,但如果你打算髮表一個答案,你需要比「某種參數」更具體。 –

+1

@Parmenion - 同意。比較你的答案[@Hans Passant's](http://stackoverflow.com/questions/7690389/c-how-to-convert-string-to-double/7690422#7690422) –

+2

Parmenion,你是反應過度。在StackOverflow上,一個模糊的答案不如準確的答案。詹姆斯約翰遜的評論只是意在指出,這不是一次人身攻擊。請閱讀常見問題解答並通常更熟悉本網站的意圖(和社區文化)。 –

-2

我用過這個命令,之前沒有問題。

string s =「20.616378139」; double d = Convert.ToDouble(s); ![輸入圖片描述] [1]