我想在一个数字的千位上加一个逗号。

String.Format()是正确的路径吗?我应该使用什么格式?


当前回答

下面的示例显示了使用包含零占位符的自定义格式字符串格式化的几个值。

String.Format("{0:N1}", 29255.0);

Or

29255.0.ToString("N1")

结果“29255 .0

String.Format("{0:N2}", 29255.0);

Or

29255.0.ToString("N2")

结果“29255”

其他回答

如果你想要特定文化,你可能想试试这个:

使用命名空间:"using System.Globalization;"

(19950000.0)。ToString("N",new CultureInfo("en-US")) = 19,950,000.00

(19950000.0)。ToString("N",new CultureInfo("is-IS")) = 19.950.000,00

印度文化: (19950000.0)。ToString("N",new CultureInfo("hi-IN"))= 1,99,50,000.00

注意:一些区域性使用,表示小数而不是。所以要小心。

如果您希望强制使用“,”分隔符,而不考虑区域性(例如在跟踪或日志消息中),那么下面的代码将可以工作,并且还有一个额外的好处,即告诉下一个偶然发现它的人您正在做什么。

int integerValue = 19400320; 
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);

设置格式为"19,400,320"

如果你想在DataGridview中显示它,你应该改变它的类型,因为默认是字符串,因为你把它改变为十进制,它认为是数字与浮点数

Dim dt As DataTable = New DataTable
dt.Columns.Add("col1", GetType(Decimal))
dt.Rows.Add(1)
dt.Rows.Add(10)
dt.Rows.Add(2)

DataGridView1.DataSource = dt

c# 7.1(也许更早?)通过字符串插值使这变得简单而美观:

var jackpot = 1_000_000; // underscore separators in numeric literals also available since C# 7.0
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";

例如String。格式(“{0时0}",1);返回01,对我来说无效

这对我很有用

19950000.ToString("#,#", CultureInfo.InvariantCulture));

输出 19950000年