以荷兰语(比利时)运行的网络服务器
double output;
double.TryParse(txtTextbox1.Text, out output);
这是在荷兰环境中将文本转换为双倍的好方法吗?假设输入为“ 24.45 ”而不是“ 24,45 ”
答案 0 :(得分:26)
如果您想使用荷兰语(比利时)数字格式:
double output;
double.TryParse("24,45", NumberStyles.Any, CultureInfo.GetCultureInfo("nl-BE"), out output);
或使用美国数字格式:
double output;
double.TryParse("24.45", NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out output);
如果你试图用荷兰文化集解析“24.45”,你会得到“2445”,同样,如果你试图用美国文化解析“24,45”,你会得到“2445” 。如果您希望在使用错误的小数点时解析失败,请更改NumberStyles.Any以排除标记:NumberStyles.AllowThousands
:
double output;
if (double.TryParse("24.45", NumberStyles.Any ^ NumberStyles.AllowThousands, CultureInfo.GetCultureInfo("nl-BE"), out output))
如果您的整个申请都是荷兰语,则应全局更改您的cultureinfo - here's how to do it in WinForms和here's how to do it in ASP.NET。
使用全局设置的CultureInfo后,您可以将上述代码更改为:
double output;
double.TryParse("24.45", NumberStyles.Any, CultureInfo.CurrentCulture, out output);
答案 1 :(得分:2)
荷兰 - 比利时的正确文化代码是“nl-BE”,所以你应该使用它而不是经常建议的“nl-NL”,这将为你提供适合荷兰的荷兰文化设置的变体。 / p>
double output;
double.TryParse("24.45", NumberStyles.Any, CultureInfo.GetCultureInfo("nl-BE"), out output);
您可以在http://arvindlounge.spaces.live.com/blog/cns!C9061D5B358A2804!263.entry找到完整的文化代码列表。
答案 2 :(得分:0)
您应该将文化设置为荷兰语。文化决定了如何解析代表数字的字符串。
查看本文:HOW TO: Set Current Culture Programmatically in an ASP.NET Application,它解释了如何为ASP.NET应用程序和当前线程设置文化。
答案 3 :(得分:0)
如果服务器的区域设置设置为荷兰语,请尝试以下操作:
double output;
double.TryParse(txtTextbox1.Text, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.CurrentCulture, out output);
答案 4 :(得分:0)
您可以使用允许您指定语言环境的重载(具有瑞典语语言环境的示例,因为我知道该语言环境是如何工作的):
double result;
if (double.TryParse("24,95", NumberStyles.AllowDecimalPoint, CultureInfo.GetCultureInfo("sv-SE"), out result))
{
Console.WriteLine(result.ToString());
}
如果我在上面的TryParse调用中传递“24.95”,它将返回false,因为瑞典十进制符号是“,”。
您可能希望尝试使用NumberStyles参数来获取所需的确切行为。例如,如果我将更改为NumberStyles.Any并使用上面的输入24.95调用该方法,TryParse将返回true,结果将为2495,这可能不是您想要的。
答案 5 :(得分:0)
我的版本适用于分隔符'.'
和','
:
public static double? GetDoubleFromString(string strNum)
{
double num = 0;
strNum = strNum.Replace(',', '.');
if (double.TryParse(strNum, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out num))
return num;
return null;
}