我試過如下:如何將「0.0000e + 000」解析成float/double?
string val = "0.0000e+000";
float.Parse(val);
...但得到了FormatException
。所以我想知道:如何將這樣的值解析爲float/double?
我試過如下:如何將「0.0000e + 000」解析成float/double?
string val = "0.0000e+000";
float.Parse(val);
...但得到了FormatException
。所以我想知道:如何將這樣的值解析爲float/double?
你有一個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
),它也會失敗。它也可能會因爲其他一些文化而失敗。
我認爲當前文化被設置爲「ru-RU」,因爲異常本身正在討論格式錯誤(формат)。好點子! – 2013-03-23 16:05:52
@ChristianIvicevic這只是一個猜測,因爲異常看起來像俄羅斯人。同樣的問題發生在法國,可能還有其他一些語言。 – Virtlink 2013-03-23 16:06:42
Fyi:входнаястрокаимеланеверныйформат=給定的輸入字符串格式錯誤。用C#學習俄語:D – 2013-03-23 16:10:53
代碼'var x = Single.Parse(「0.0000e + 000」);'不會在新項目中拋出異常。你可以在上下文中發佈更多的代碼嗎? – 2013-03-23 15:51:29
'var d = Convert.ToDouble(「0.0000e + 000」);'也可以 – 2013-03-23 15:53:15
檢查您的值。正如@Cole所評論的,使用具有您提供的值的方法工作。導致異常的值是多少? – Oded 2013-03-23 15:55:22