[英]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.