我发现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
答案 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"
因此它与您的操作系统版本无关。
请注意,您应始终将TryParse
(bool
)的结果存储在变量中,或使用if...else
而不是使用返回的out
值来确定是否可以解析或不解析。即使0
也可能是有效值。