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

本文关键字:获取 设置 小数 分隔符 CultureInfo | 更新日期: 2023-09-27 18:11:52

我正在将一个程序从VB6(一种我不知道的语言)转换为c#。在VB6代码中,它使用GetLocaleInfo()SetLocaleInfo(),我发布了一个问题,询问如何在c#中做到这一点,我被告知使用"CultureInfo.CurrentCulture.NumberFormat"。预"。

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

在原始代码中,程序员在内部使用美式"。"格式进行大量字符串格式化和构建,因此他首先获取当前区域设置的分隔符(例如,",")并保存它,然后将当前区域设置为使用"。"并执行所有操作,然后在完成后将其设置为保存的内容。我的命令是尽可能接近原始设计,这就是为什么我问GetLocaleInfo()SetLocaleInfo(),但如果有人能告诉我如何做这个CultureInfo我很感激。

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

中所有的代码
 LCID = GetThreadLocale 
 rc = SetLocaleInfo(LCID, LOCALE_SDECIMAL, ".")

那个就是代码。我想在c#中做同样的事情。我从VB6程序员那里得到的理解是,它得到当前的语言环境设置(比如,德语),然后说,不管德语使用","作为小数分隔符,我们将使用"。"

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

您似乎正在寻找"NumberFormatInfo"对象(System.Globalization)的"NumberDecimalSeparator"属性。这是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",等等

希望这是一个比你链接的更清晰和简洁的解释。