visual studio 中的 CultureInfo 结果在 windows 8 和 windows 10 之间不同
CultureInfo result in visual studio is different between windows 8 and windows 10
我发现 CultureInfo class returns 信息,如数字格式,在 windows 8.1 和 10 中执行时不同。我创建了一个简单的控制台应用程序以符合给出的以下。在 windows 8.1 中转换的结果是 2235。但是在 windows 10 中结果是 0。我在这两种环境中都使用 visual studio 2013。
CultureInfo cultureInfo = new CultureInfo(3079);
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;
string value = "2.235";
decimal test;
decimal.TryParse(value, NumberStyles.Any, cultureInfo, out test);
如果您需要任何进一步的信息以提供清晰的图片,请告诉我。
问候
帕塔普
这个
CultureInfo cultureInfo = new CultureInfo(3079);
与
相同
CultureInfo cultureInfo = new CultureInfo("de-AT");
这是奥地利文化。他们使用逗号作为小数点分隔符,但 space 作为千位分隔符(与使用 .
表示千位的德国人相反)。
所以这个有效(附加 ,99
为清楚起见,您可以删除它):
string value = "2 235,99";
bool valid = decimal.TryParse(value, NumberStyles.Any, new CultureInfo("de-AT"), out test);
但这种格式不是:string value = "2.235,99"
所以这与你的OS版本无关。
请注意,您应该始终将 TryParse
(bool
) 的结果存储在变量中或使用 if...else
而不是使用返回的 out
值来确定是否可以解析。甚至 0
也可能是一个有效值。
我发现 CultureInfo class returns 信息,如数字格式,在 windows 8.1 和 10 中执行时不同。我创建了一个简单的控制台应用程序以符合给出的以下。在 windows 8.1 中转换的结果是 2235。但是在 windows 10 中结果是 0。我在这两种环境中都使用 visual studio 2013。
CultureInfo cultureInfo = new CultureInfo(3079);
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;
string value = "2.235";
decimal test;
decimal.TryParse(value, NumberStyles.Any, cultureInfo, out test);
如果您需要任何进一步的信息以提供清晰的图片,请告诉我。
问候 帕塔普
这个
CultureInfo cultureInfo = new CultureInfo(3079);
与
相同CultureInfo cultureInfo = new CultureInfo("de-AT");
这是奥地利文化。他们使用逗号作为小数点分隔符,但 space 作为千位分隔符(与使用 .
表示千位的德国人相反)。
所以这个有效(附加 ,99
为清楚起见,您可以删除它):
string value = "2 235,99";
bool valid = decimal.TryParse(value, NumberStyles.Any, new CultureInfo("de-AT"), out test);
但这种格式不是:string value = "2.235,99"
所以这与你的OS版本无关。
请注意,您应该始终将 TryParse
(bool
) 的结果存储在变量中或使用 if...else
而不是使用返回的 out
值来确定是否可以解析。甚至 0
也可能是一个有效值。