数字格式当前文化

时间:2016-11-21 21:59:19

标签: c# internationalization format

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

enter image description here

我想使用当前的文化信息,但使用自定义格式,如小数点,数字分组符号等。

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

2 个答案:

答案 0 :(得分:0)

  

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

  • 如果Windows隐式设置当前线程文化 GetUserDefaultLocaleName函数。

  • 如果是当前的线程文化 由DefaultThreadCurrentCulture属性定义的对应 当前的Windows系统文化。

  • 如果是当前的线程文化 明确设置为CreateSpecificCulture返回的文化 方法,该文化对应于当前的Windows系统 文化。
  • 如果当前线程文化明确设置为文化 由CultureInfo(String)构造函数和该文化实例化 对应于当前的Windows系统文化。

当您传递CurrentCulture时,它将用于将字符串传递给小数。

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

答案 1 :(得分:0)

您可以从CurrentThread

中获取当前的文化编号格式
var format = Thread.CurrentThread.CurrentCulture.NumberFormat;

修改

CultureInfo.NumberFormat

  

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

     

如果UseUserOverride为true且为   指定的文化与当前的Windows文化相匹配   CultureInfo使用这些覆盖,包括用户设置   由...返回的DateTimeFormatInfo实例的属性   DateTimeFormat属性,以及NumberFormatInfo的属性   NumberFormat属性返回的实例。如果是用户设置   与CultureInfo相关的文化不相容   例如,如果所选日历不是OptionalCalendars之一,   方法的结果和属性的值是   未定义。

因此var decimalDigits = format.NumberDecimalDigits;应该返回您的自定义更改。