![](/img/trans.png)
[英]How to set Million separator (') and thousand (.) using cultureinfo in C#
[英]How to get and set decimal separator in C# using CultureInfo
我正在将例程从VB6(一种我不知道的语言)转换为C#。 在VB6代码中,它使用GetLocaleInfo()和SetLocaleInfo(),然后我发布了一个问题 ,询问如何在C#中执行此操作,并被告知要使用“ CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator”代替。
就我的目的而言,我只对获取小数点分隔符并将其设置为当前的语言环境感兴趣。 按照原始问题的答案中的链接,如何执行此操作并不明显。
在原始代码中,程序员使用美国的“”。 内部格式化许多字符串格式和构建,因此他首先获取当前语言环境的分隔符(例如,“,”)并保存,然后将当前语言环境设置为使用“。” 并完成所有工作,然后他将其恢复为完成时保存的内容。 我的前进顺序是尽可能地与原始设计保持一致,这就是为什么我询问GetLocaleInfo()和SetLocaleInfo()的原因 ,但是如果有人可以演示如何执行此CultureInfo,我将不胜感激。
编辑:我不明白人们不喜欢这个问题。 我也不明白人们在寻找什么代码。 这就是VB6中的所有代码
LCID = GetThreadLocale
rc = SetLocaleInfo(LCID, LOCALE_SDECIMAL, ".")
那就是代码。 我想在C#中做同样的事情。 我对VB6程序员的理解是,它将获得当前的语言环境设置(例如德语),并说不管德语使用“,”作为小数点分隔符,我们都将使用“”。 。
如前所述,您似乎正在寻找“ 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”,依此类推。
希望这是一个比您所链接的解释更加清晰和简洁的解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.