C# 荷兰语中的double.TryParse

C# 荷兰语中的double.TryParse,c#,C#,以荷兰语运行的Web服务器(比利时) 在荷兰环境中,这是将文本转换为双精度文本的好方法吗?假设输入为“24.45”而不是“24,45”您应该将区域性设置为荷兰语。区域性决定了如何解析表示数字的字符串 检查本文:,它解释了如何为ASP.NET应用程序和当前线程设置区域性。如果要使用荷兰(比利时)数字格式: double output; double.TryParse("24,45", NumberStyles.Any, CultureInfo.GetCultureInfo("nl-BE"), ou

以荷兰语运行的Web服务器(比利时)


在荷兰环境中,这是将文本转换为双精度文本的好方法吗?假设输入为“24.45”而不是“24,45

您应该将区域性设置为荷兰语。区域性决定了如何解析表示数字的字符串


检查本文:,它解释了如何为ASP.NET应用程序和当前线程设置区域性。

如果要使用荷兰(比利时)数字格式:

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,并且

使用全局设置的CultureInfo后,可以将上述代码更改为:

double output;
double.TryParse("24.45", NumberStyles.Any, CultureInfo.CurrentCulture, out output);

如果服务器的区域设置设置为荷兰数字,请尝试以下操作:

double output;
double.TryParse(txtTextbox1.Text, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.CurrentCulture, out output);

您可以使用重载来指定语言环境(瑞典语言环境示例,因为我知道它是如何工作的):

如果我在上面对TryParse的调用中通过“24.95”,它将返回false,因为瑞典小数点符号是“,”


您可能需要尝试NumberStyles参数,以获得所需的确切行为。例如,如果我改为NumberStyles.Any并使用上面的输入24.95调用该方法,TryParse将返回true,结果将是2495,这可能不是您想要的结果。

荷兰-比利时的正确文化代码是“nl be”,因此您应该使用该代码,而不是经常建议的“nl nl”,这将为您提供适合荷兰的荷兰文化设置变体

double output;
double.TryParse("24.45", NumberStyles.Any, CultureInfo.GetCultureInfo("nl-BE"), out output);

您可以在以下位置找到区域性代码的完整列表。

我的版本可以同时使用分隔符
,'

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;
        }

唉,现在我脑子里一直在想这首歌:如果我全局设置CultureInfo,double.TryParse(“24.45”,out output)的性能将与double.TryParse(“24.45”,NumberStyles.Any,CultureInfo.CurrentCulture,out output”)相同。这对
1234567.89
1.234.567,89
double output;
double.TryParse("24.45", NumberStyles.Any, CultureInfo.GetCultureInfo("nl-BE"), out output);
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;
        }