问题:假设您使用的是点“。” 作为区域设置中的小数分隔符,并使用逗号对字符串进行编码。
string str = "2,5";
当你decimal.TryParse(str, out somevariable);
呢?
somevariable
将假设为 0。
你能做些什么来解决它?
1-你可以
decimal.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out somevariable);
它会返回 25,而不是 2.5,这是错误的。
2-你可以
decimal.TryParse(str.Replace(",","."), out num);
并且它将返回正确的值,但是,如果用户将","
其用作小数分隔符,它将不起作用。
我无法使其工作的可能解决方案:
在区域设置中获取用户小数分隔符:
char sepdec = Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
并以某种方式替换 from ",",sepdec
,这样如果它是逗号,它将保持逗号,如果用户使用点,则替换为实际的点。
提示?
编辑:最近,许多用户发布了有用的信息,如果您的分隔符设置为“,”,则使用NumberStyles.Any, CultureInfo.GetCultureInfo("pt-PT")
a 上的参数tryParse
将不起作用,因此它几乎不能满足使 tryparse“通用”的前提。
我会解决这个问题,如果有人有更多提示,欢迎您