如何使用CultureInfo在C#中获取和设置小数分隔符

时间:2014-07-07 14:57:48

标签: c# localization

我正在将例程从VB6(一种我不知道的语言)转换为C#。在VB6代码中,它使用 GetLocaleInfo() SetLocaleInfo()和我posted a question来询问如何在C#中执行此操作,并被告知要使用“CultureInfo” .CurrentCulture.NumberFormat.NumberDecimalSeparator“而不是。

出于我的目的,我只对获取当前语言环境的小数点分隔符并将其设置为感兴趣。根据原始问题答案中的链接,如何做到这一点并不明显。

在原始代码中程序员使用美国“。”在内部格式化大量的字符串格式和构建,因此他首先获取当前语言环境的分隔符(例如,“,”)并保存它,然后他将当前语言环境设置为使用“。”做了他所有的事情,然后他把它归还给他完成时所拯救的东西。我的行军命令是尽可能贴近原始设计,这就是为什么我询问 GetLocaleInfo() SetLocaleInfo(),但如果有人可以展示如何做这个CultureInfo我很感激。

编辑:我不明白人们对这个问题不喜欢什么。我也不明白人们在寻找什么代码。这是VB6中的所有代码

 LCID = GetThreadLocale 
 rc = SetLocaleInfo(LCID, LOCALE_SDECIMAL, ".")

代码。我想在C#中做同样的事情。我对VB6程序员的理解是,它获取当前的语言环境设置(比如说德语)并说,不管德语使用“,”作为小数分隔符,我们将使用“。”

1 个答案:

答案 0 :(得分:2)

您似乎正在寻找" NumberDecimalSeparator" " NumberFormatInfo"的属性对象(System.Globalization),如您所述。 Here's关于它的msdn文章。用法(来自msdn页面)如下:

// Gets a NumberFormatInfo associated with the en-US culture.
  NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat;

  // Displays a value with the default separator (".").
  Int64 myInt = 123456789;
  Console.WriteLine( myInt.ToString( "N", nfi ) );

  // Displays the same value with a blank as the separator.
  nfi.NumberDecimalSeparator = " ";
  Console.WriteLine( myInt.ToString( "N", nfi ) );

您可以使用NumberDecimalSeparator =""更改分隔符。如上所示。所有数字输出都将使用指定的分隔符。

同样,您可以使用NumberGroupSeparator属性来处理整数位的分隔:

nfi.NumberGroupSeparator = ".";

...将制作" 123,456,789"显示为" 123.456.789"等等

希望这是一个比你联系的更清晰简洁的解释。