在Windows 8和Windows 10之间,Visual Studio的VisualInfo结果是不同的

时间:2017-03-17 10:30:40

标签: c# visual-studio-2013 windows-10 windows-8.1 cultureinfo

我发现CultureInfo类返回数字格式等信息,这些信息在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); 

如果您需要任何进一步的信息以便提供清晰的图片,请与我们联系。

此致 Prathap

1 个答案:

答案 0 :(得分:0)

这个

CultureInfo cultureInfo = new CultureInfo(3079);

相同
CultureInfo cultureInfo = new CultureInfo("de-AT");

这是奥地利文化。他们使用逗号作为小数分隔符,但空格为千位分隔符(而不是使用.成千上万的德国人。)

所以这样做(为了清楚起见,附加,99,你可以删除它):

string value = "2 235,99";
bool valid = decimal.TryParse(value, NumberStyles.Any, new CultureInfo("de-AT"), out test);

但这种格式不是:string value = "2.235,99"

因此它与您的操作系统版本无关。

请注意,您应始终将TryParsebool)的结果存储在变量中,或使用if...else而不是使用返回的out值来确定是否可以解析或不解析。即使0也可能是有效值。