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 也可能是一个有效值。