C#字符串到浮点型转换
我需要将字符串转换为浮点型。这些是是我的示例串:C#字符串到浮点型转换
1 MW00000.00毫米
2 MW0000.000毫米
3 MW -00000.01毫米
4 MW00000.00毫米
5 MW00002.92毫米
6 MW 00002.69毫米
这是我在做什么:
text = text.Substring(pos + 5, 9).Trim();
float val = 0.0F;
float.TryParse(texto, out val);
this.txtDimension1.Text = val.ToString();
好吧,这适合我的环境,这是en_US,但是当我运行这个代码在西班牙语环境中,它将-00000.01转换为-1.0
我认为这是一个逗号问题,英文数字之间用点分隔(“。”)和西班牙语,它们之间用逗号隔开( “”)。
我该如何使这两种语言的工作?
谢谢, Richard。
你需要传递的CultureInfo对于该字符串在格式化文化
http://msdn.microsoft.com/en-us/library/3s27fasw.aspx
从MSDN的例子是:
double number;
string value = "1,097.63";
NumberStyles style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
if (Double.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
另外,如果您的输入字符串的格式不同,然后使用CultureInfo.CurrentCulture
您将需要使用TryParse重载,允许您指定文化,您将需要获取en-us的文化信息,然后您可以对每个人解析它。
使用CultureInfo.InvariantCulture.
float.TryParse(texto, NumberStyles.Any, CultureInfo.InvariantCulture, out val);
如果输入的字符串可以改变,你将不得不检测和你的输入与正确的文化匹配。
谢谢,这有帮助! :) – richardalberto 2010-10-22 05:39:29
你可以尝试使用ToSingle方法基本上是别名“浮动”
在C#实现。
float val = (float)System.Convert.ToSingle(text);
我同意罗伯特哈维,因为他指出文化信息和使用Tryparse超载。好建议!
他正在要求“字符串到浮点转换”。查看代码并从字符串中添加正确的转换以浮动为“ToSingle”就是这样做的!这是要求和罗伯茨的建议修复了文化问题w /“西班牙语”。我觉得在我的回复中没有必要冗余,因为它已经在上面回答了。出于这个原因,你的逻辑是错误的,你还需要语法检查。你显然没有看到图片。此外,当你投票失败时,为什么我需要金牌解答你的理解?如果你不明白正确的转换,你不应该判断 – Nightforce2 2010-10-23 02:37:12
它不是为这个问题的答案,但我增加一条,作为一个答案只显示代码..
我只是想提醒您使用Substring
,这将可能会导致一个问题,当第一数字变得超过9 [两个字符+]。
我想用正则表达式是在这种情况下更好,这是表达您需要:
string str = @"4 MW +12345.67 mm";
Regex r = new Regex(@".* MW (?<number>.+) mm", RegexOptions.IgnoreCase);
var match = r.Match(str);
string matchedString = string.Empty;
if (match.Success)
matchedString = match.Groups["number"].Value;
Console.WriteLine(matchedString);
注:可以提高表达的通过检查值的质量,如果它是一个流动号,但我认为这对你的情况已经足够了。
祝你好运!
这是另一个关于你如何做的SO贴子。 http://stackoverflow.com/questions/3059587/c-float-to-string-conversion-decimal-separator-problem – 2010-10-21 21:31:11
好吧,我在这里有一个问题...如果我通过CultureInfo让我们说,英语,将它是“。”英语和“,”西班牙语?谢谢 – richardalberto 2010-10-21 21:35:17
@Richard。也许我误解了这个问题。每种文化的*输入*字符串格式不同? – PaulG 2010-10-21 21:41:33