我的代码如下所示,我正在尝试对号码进行自定义分组 例如:1000000应该是1000,000
我尝试了很多搜索结果,这些结果允许使用千位分隔符和自定义分组,但是每一个给出的结果都为10,00,000
decimal value = decimal.Parse(txtamount.Text.Trim());
txtamount.Text = value.ToString("#,###0");
在此代码中,我还尝试了以下代码
txtamount.Text = String.Format("{0:n0}", value);
txtamount.Text = value.ToString("#,##0", new System.Globalization.CultureInfo("en-US"));
txtamount.Text = value.ToString("0,0.0",CultureInfo.InvariantCulture); //-->1,000,000.0
这不是数字的常规千位分隔符分组。 我正在尝试以1000,000格式输出
答案 0 :(得分:2)
要仅使用一个分组分隔符,可以使用以下方法:
// create a writable copy of the culture of your choice
var ci = (CultureInfo)CultureInfo.GetCultureInfo("en-us").Clone();
// change the group sizes: the first one after 3 digits (counting backwards)
// NO second (third, ..) one!
ci.NumberFormat.NumberGroupSizes = new[]{3,0};
// and use it
// the , in the format means "use a group separator", it does NOT specify a position
var millionString1 = 1_000_000.ToString("#,#", ci); // 1000,000
var millionString2 = 1_000_000.ToString("N0", ci); // also 1000,000
但是请注意,现在一千万将变成10,000,000。
请参见docs。
答案 1 :(得分:0)
由于这是一种自定义格式,因此您需要转义逗号,
string.Format("{0:####\\,###}",value)
答案 2 :(得分:0)
没有custom formatter似乎不可能,但是可以在后面插入逗号。例如:
string value = "1234567.890"
string result = Regex.Replace(value, @"(\d+)(\d\d\d)", "$1,$2"); // result = "1234,567.890"