C# 数字格式当前区域性

C# 数字格式当前区域性,c#,internationalization,format,C#,Internationalization,Format,我试图获取数字格式,以便使用当前区域性从字符串转换为十进制,我的系统中有下一个配置: 我想使用当前区域性信息,但使用自定义格式,如十进制符号、数字分组符号等 有没有办法恢复自定义格式配置 Windows允许用户重写的标准属性值 CultureInfo对象及其关联对象,通过使用区域和 控制面板中的语言选项。由返回的CultureInfo对象 CurrentCulture属性反映了 以下情况: 如果当前线程区域性由Windows隐式设置 GetUserDefaultLocaleName函数 如果

我试图获取数字格式,以便使用当前区域性从字符串转换为十进制,我的系统中有下一个配置:

我想使用当前区域性信息,但使用自定义格式,如十进制符号、数字分组符号等

有没有办法恢复自定义格式配置

Windows允许用户重写的标准属性值 CultureInfo对象及其关联对象,通过使用区域和 控制面板中的语言选项。由返回的CultureInfo对象 CurrentCulture属性反映了 以下情况:

  • 如果当前线程区域性由Windows隐式设置 GetUserDefaultLocaleName函数

  • 如果当前线程区域性 由DefaultThreadCurrentCulture属性定义的对应于 当前Windows系统区域性

  • 如果当前线程区域性为 显式设置为CreateSpecificCulture返回的区域性 方法,并且该区域性对应于当前Windows系统 文化
  • 如果当前线程区域性显式设置为区域性 由CultureInfo(字符串)构造函数实例化,并且该区域性 对应于当前Windows系统区域性
当您传递CurrentCulture时,它将用于将字符串传递到小数点

decimal number;
if (!decimal.TryParse(numberString, NumberStyles.Number, CultureInfo.CurrentCulture, out number))
{
    // Something wrong...
}

您可以从
CurrentThread
获取当前区域性编号格式

var format = Thread.CurrentThread.CurrentCulture.NumberFormat;
编辑:

用户可能会选择覆盖与关联的某些值 通过地域和语言来了解Windows的当前文化 控制面板的选项部分。例如,用户可以选择 以其他格式显示日期或使用其他货币 而不是区域性的默认值

如果UseUserOverride为true,则 指定的区域性与Windows的当前区域性匹配 CultureInfo使用这些覆盖,包括 由返回的DateTimeFormatInfo实例的属性 DateTimeFormat属性和NumberFormatInfo的属性 由NumberFormat属性返回的实例。如果用户设置 与与CultureInfo关联的区域性不兼容,例如 例如,如果所选日历不是可选日历之一, 方法的结果和属性值如下所示 未定义


So
var decimalDigits=format.NumberDecimalDigits应返回您的自定义更改。

关闭,但问题是恢复当前区域性的自定义格式。@GonzaloAguayo检查编辑。检查UseUserOverride是否为true。