确定在特定系统的自定义格式设置中使用哪个十进制符号

时间:2017-04-11 16:46:35

标签: c# windows winforms double decimal-point

如何知道在Windows系统"."设置中使用了哪个小数符号",""'"Region/Formats/Additional Settings/Customize Format

在我的系统中,它是一个点".",如果在我的代码中,我有这个标记用于双数字插入,文本框用于计算,例如,部分只允许一个小数点:

 if ((e.KeyChar == ',') && ((sender as TextBox).Text.IndexOf(',') > -1)) 

在我的系统上,它正常工作,代码中没有使用哪个标记,以及在自定义格式设置,点,逗号或撇号中使用哪个十进制符号,没有相互对应的事项。

但是在另一台计算机上,同一个程序会抛出异常"input string was not in correct format"

然后我在这个系统上检查了两个版本的程序,一个用点'.',另一个用逗号',',与我的系统不同,只能使用符号对应自定义格式设置的版本,我一个或另一个例外。

首先,我无法理解为什么在我的系统上没有问题,在设置中使用哪个标记,以及为什么它在另一个系统上是重要的。

所以我不确定我是否必须在这种情况下使用替换方法,因为这个标记在Math中的计算阶段起作用,在我需要知道之前,在特定系统中使用了哪个符号设置为防止它与相应的符号我猜,但我不知道该怎么做

1 个答案:

答案 0 :(得分:1)

看起来您想将用户输入转换为十进制?

您可以直接使用Double.TryParse来执行此操作。

result = Double.TryParse(input, NumberStyles.Any,
          CultureInfo.CurrentCulture.NumberFormat, 
          out number);

有一个msdn article涵盖了此内容。

如果你想手动解析输入,那么CultureInfo.CurrentCulture.NumberFormat类将一组分隔符作为其属性的一部分,具体取决于你期望的输入类型。