相关疑难解决方法(0)

使 TryParse 与逗号或点小数分隔符兼容

问题:让我们假设您正在使用一个点“。” 作为区域设置中的小数点分隔符,并用逗号对字符串进行编码。

string str = "2,5";

当你decimal.TryParse(str, out somevariable);它时会发生什么?

somevariable 将假设为 0。

你能做些什么来解决它?

1-你可以

decimal.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out somevariable);
Run Code Online (Sandbox Code Playgroud)

它会返回 25,而不是 2.5,这是错误的。

2-你可以

decimal.TryParse(str.Replace(",","."), out num);
Run Code Online (Sandbox Code Playgroud)

它会返回正确的值,但是,如果用户","用作小数点分隔符,它将不起作用。

我无法使其工作的可能解决方案:

在区域设置中获取用户小数点分隔符:

char sepdec = Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
Run Code Online (Sandbox Code Playgroud)

并以某种方式替换 from ",",sepdec,这样如果它是逗号,它将保留一个逗号,如果用户使用点,则用实际的点替换。

提示?

编辑:很多网友发帖有用的信息,最近,使用参数NumberStyles.Any, CultureInfo.GetCultureInfo("pt-PT")tryParse是行不通的,如果你的分隔符设置为“”所以它几乎犯规作出的TryParse‘通用’的fullfill前提。

我会解决这个问题,如果有人有更多提示,欢迎

c# decimal tryparse regional-settings

18
推荐指数
2
解决办法
2万
查看次数

标签 统计

c# ×1

decimal ×1

regional-settings ×1

tryparse ×1