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

Determine which Decimal Symbol is used in Customized Format settings of particular system

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

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

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

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

但是在另一台电脑上,同样的程序抛出异常"input string was not in correct format"

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

首先,我不明白为什么在我的系统上这无关紧要,设置中使用了哪个标记,以及为什么在另一个系统上它很重要。

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

您似乎想将用户输入转换为十进制?

您可以直接使用 Double.TryParse 来做到这一点。

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

有一个msdn article涵盖了这个。

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