double.TryParse in dutch

时间:2009-05-25 07:34:17

标签: c#

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

double output;

double.TryParse(txtTextbox1.Text, out output);

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

6 个答案:

答案 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 WinFormshere'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;
        }