2013-03-23 40 views
0

我試過如下:如何將「0.0000e + 000」解析成float/double?

string val = "0.0000e+000"; 
float.Parse(val); 

...但得到了FormatException。所以我想知道:如何將這樣的值解析爲float/double?

Parsing into a float

Parsing into a double

+2

代碼'var x = Single.Parse(「0.0000e + 000」);'不會在新項目中拋出異常。你可以在上下文中發佈更多的代碼嗎? – 2013-03-23 15:51:29

+1

'var d = Convert.ToDouble(「0.0000e + 000」);'也可以 – 2013-03-23 15:53:15

+0

檢查您的值。正如@Cole所評論的,使用具有您提供的值的方法工作。導致異常的值是多少? – Oded 2013-03-23 15:55:22

回答

4

你有一個CultureInfo.CurrentCulture(當前區域性)該小數點是不同的。嘗試用不變的文化,而不是對它進行分析:

var x = Single.Parse("0.0000e+000", CultureInfo.InvariantCulture); 

爲了說明問題:如果你是俄羅斯的,你目前的文化將被設置爲ru-RU。然後將下面的失敗

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("ru-RU"); 
var x = Single.Parse("0.0000e+000"); 

出現FormatException:輸入字符串的不正確的格式。

如果你是法國人(fr-FR),它也會失敗。它也可能會因爲其他一些文化而失敗。

+0

我認爲當前文化被設置爲「ru-RU」,因爲異常本身正在討論格式錯誤(формат)。好點子! – 2013-03-23 16:05:52

+0

@ChristianIvicevic這只是一個猜測,因爲異常看起來像俄羅斯人。同樣的問題發生在法國,可能還有其他一些語言。 – Virtlink 2013-03-23 16:06:42

+0

Fyi:входнаястрокаимеланеверныйформат=給定的輸入字符串格式錯誤。用C#學習俄語:D – 2013-03-23 16:10:53