繁体   English   中英

Double.Parse支持本地语言

[英]Double.Parse for Native language support

我的价值20,55是德语。
当我将区域设置更改为US时,运行此代码后,该值显示为2055.0

double d = Double.Parse("20,55",CultureInfo.CurrentCUCulture);

这是为什么?

因为在美国,是千分隔符,它被忽略了吗? 以同样的方式在德国(和欧洲大陆) . 是千分隔符,它被忽略了?

在德国你写:1.000,55。 在美国你写:1,000.55(有思想的一些学校中删除,如果有一个数字之前那么1000.55和11,000.55)。

现在,如果您想确保您的程序使用de-DE文化,请在任何地方作为参数传递

CurrentCulture culture = new CultureInfo("de-DE");

double d = double.Parse("20,55", culture);

在美国,小数分隔符是. 不是, 如果你试图解析20,55 ,它(显然)会忽略逗号作为标准三元组分隔符(例如在1,234,567.89 ),即使它们都没有三位数。

如果要解析欧式数字,则需要使用欧式文化设置进行解析。

这是因为美国小数分隔符是. 而不是,

如果您想要避免该问题,无论用户的区域设置如何,您都可以编写扩展方法:

public static String ToRegionalNumber(this String str) {
    String regionalNb = str.Replace(",", NumberFormatInfo.CurrentInfo.NumberDecimalSeparator);
    regionalNb = regionalNb .Replace(".", NumberFormatInfo.CurrentInfo.NumberDecimalSeparator);
    return regionalNb ;
}

在使用您的号码时调用此方法:

double d = Double.Parse("20,55".ToRegionalNumber());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM