2010-07-13 71 views
4

我想將一個字符串轉換爲.net 3.5中的一個double值。到目前爲止很容易與錯誤的值與double.Parse(字符串)

double.Parse(value); 

我的問題是,具有指數標記值是不正確的轉換。 例如:

double value = double.Parse("8.493151E-2"); 

該值應該是= 0.0893151對不對? 但它不是! 價值= 84931.51 !!!

這怎麼可能? 我完全困惑!

我閱讀了msdn庫中的參考資料,它確認支持「8.493151E-2」這樣的值。我也試着用NumberStyles重載double.Parse(),但沒有成功。

請幫忙!

回答

15

它爲我的作品:

double.Parse("8.493151E-2"); 
0.08493151 

你可能在使用,爲千位分隔符小數點分隔符和.一個語言環境中運行。
因此,它被視爲8,493,151E-2,實際上相當於84,931.51

將其更改爲

double value = double.Parse("8.493151E-2", CultureInfo.InvariantCulture); 
+0

好吧,這作品! 我沒有嘗試使用IFormatProvider 謝謝! – Kai 2010-07-13 14:26:33

+0

@flashfail - 如果您不指定「IFormatProvider」,它將使用您的計算機的語言環境。你把你的位置定爲「DE Oldenburg」,我假設它在德國 - 你使用小數點逗號和「。」。作爲千位分隔符。 – ChrisF 2010-07-13 14:31:19