确定在特定系统的自定义格式设置中使用哪个十进制符号
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 将一组分隔符作为其一部分 属性,具体取决于您期望的输入类型。
如何知道 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 将一组分隔符作为其一部分 属性,具体取决于您期望的输入类型。