我正在读取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