我正在讀取XML文件中的數字。其他數字帶逗號分隔符(0,1111),其他數字帶點(0.1111)。我如何解析這些數字,以便最終得到理想的結果?我嘗試使用float.Parse(reader.Value, System.Globalization.CultureInfo.InvariantCulture);
,但它不起作用。例如,我有reader.Value =「0,01119703」並被解析爲1119703.0。C#解析從字符串浮點數
回答
我不認爲有可能同時使用兩個不同的小數點分隔符。我想我會使用Replace()將任何逗號更改爲點。
float.Parse(reader.Value.Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture);
這種方法的一個風險是如果數字可能是1000.00的格式 – 2011-05-29 23:57:09
這有點不妥。如果輸入「3,456.78」,上面的代碼會將其更改爲「3.456.78」,這可能會導致解析錯誤。 – 2011-05-29 23:57:28
這不是一個選項。我無法改變任何來源。 – user579674 2011-05-29 23:57:56
XML文件中是否有任何內容會告訴您正在使用哪種格式? .NET中沒有內置的方法可以使用兩個不同的允許的十進制分隔符。如果沒有任何信息告訴你一個數字的格式,那麼你總是可以檢查字符串是否包含句點或逗號,並創建一個NumberFormatInfo作爲小數分隔符。當然,如果任何數字有一個句點或逗號作爲千位分隔符,這將不起作用。
他們是小數字,所以可能沒有任何千位分隔符。我如何檢查它是否是逗號或點?如果包含這些字符,我必須檢查字符串嗎? – user579674 2011-05-29 23:59:29
您不必檢查任何內容,只需使用Replace()函數即可。如果它找不到要替換的字符,它將返回原始字符串。看到我在回答中發佈的代碼:-) – AHM 2011-05-30 00:03:04
不知道這是最好的解決方案,但也許你可以依靠一套已知的「自定義」數字格式。舉例來說,你可以聲明瞭兩個自定義數字格式(無論是從頭開始或基於關閉已知的格式的),如:
private static readonly NumberFormatInfo DecimalSeparatorFormat = new NumberFormatInfo { NumberDecimalSeparator = ".", NumberGroupSeparator = "," };
private static readonly NumberFormatInfo CommaSeparatorFormat = new NumberFormatInfo { NumberDecimalSeparator = ",", NumberGroupSeparator = "." };
然後嘗試通過解析您知道接受的格式數量:
if (!Single.TryParse(unparsedValue, NumberStyles.Float, DecimalSeparatorFormat, out parsedValue) && !Single.TryParse(unparsedValue, NumberStyles.Float, CommaSeparatorFormat, out parsedValue))
throw new FormatException("Number format not supported");
這假定您有一定數量的已知格式,如果您的輸入可能真的存在於任何文化中,那麼您找到一個好的解決方案可能會不太順利。
使用這種方法的一個勝利是你至少在你能夠支持的格式中明確表示,而不是依靠簡單的字符串替換(這可能會導致格式無效)。
- 1. 解析字符串以浮點數C#
- 2. C++從字符串解析小浮點數
- 3. 如何從字符串解析到C#中的浮點數?
- 4. 從字符串解析到浮點數返回帶有問號的浮點數
- 5. C++解析,從字符串
- 6. 目的c:解析字符串爲浮點數,避免額外的小數點
- 7. Python - 將字符串解析爲浮點數組?
- 8. 把字符串解析爲int或者用boost spirit浮點數
- 9. Mongodb解析字符串爲十進制/浮點數
- 10. 從C中的字符串解析浮點值時出現問題
- 11. 從EditText到浮點數的字符串
- 12. 從字符串轉換爲浮點數
- 13. 解析字符串來浮動
- 14. 解析字符串的浮動
- 15. Python字符串解析浮動
- 16. Java將一串浮點數解析爲浮點數組?
- 17. 從字符串到鍵的C#解析
- 18. C:從u_char解析字符串*
- 19. 從字符串c解析多個值#
- 20. 從C#中的字符串解析PointF?
- 21. C#,解析從字符串錯誤
- 22. C++從字符串指針解析int
- 23. 解析字符串 - 從字符串
- 24. 解析C++字符串
- 25. 解析字符串C#
- 26. 解析字符串到C++
- 27. C#解析JSON字符串
- 28. Visual C++字符串解析
- 29. 字符串解析在C#
- 30. 解析字符串C
你想把它解析爲什麼? – soandos 2011-05-29 23:52:05
誰給你這樣奇怪的數據?似乎真正的問題是與源... – Cameron 2011-05-29 23:54:41
@soandos我希望它被解析爲一個浮點數。最初它是字符串。 – user579674 2011-05-29 23:56:21