c# string format千分位




.NET String.Format()在数字中为千位添加逗号 (14)

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

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

要么

29255.0.ToString("N1")

结果“29,255.0”

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

要么

29255.0.ToString("N2")

结果“29,255.00”

我想为数字在千位上添加一个逗号。 String.Format()


例如String.Format("{0:0,0}", 1); 返回01,对我来说无效

这对我有用

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

产量19,950,000


如果你想强制一个“,”分隔符而不考虑文化(例如在跟踪或日志消息中),下面的代码将起作用,并且还有另一个好处,就是告诉下一个正在做什么的人。

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

设置格式为“19,400,320”


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

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

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

注意:有些文化使用,表示小数而不是. 所以要小心。


我发现这是最简单的方法:

myInteger.ToString("N0")

我曾经不再担心文化和潜在格式问题的方法是,我将它格式化为货币,然后取出货币符号。

if (decimal.TryParse(tblCell, out result))

{
  formattedValue = result.ToString("C").Substring(1);
}

最被投票的答案是伟大的,并有助于大约7年。 随着C#6.0的引入,特别是字符串插值,有一种更简洁和更安全的方式来执行要求to add commas in thousands place for a number

var i = 5222000;
var s = $"{i:n} is the number"; // results to > 5,222,000.00 is the number
s = $"{i:n0} has no decimal"; // results to > 5,222,000 has no decimal

变量i代替占位符(即{0} )。 所以不需要记住哪个物体到达哪个位置。 格式(即:n )没有改变。 有关新功能的完整功能,可以转到此页面


标准格式及其相关输出,

Console.WriteLine("Standard Numeric Format Specifiers");
String s = String.Format("(C) Currency: . . . . . . . . {0:C}\n" +
                    "(D) Decimal:. . . . . . . . . {0:D}\n" +
                    "(E) Scientific: . . . . . . . {1:E}\n" +
                    "(F) Fixed point:. . . . . . . {1:F}\n" +
                    "(G) General:. . . . . . . . . {0:G}\n" +
                    "    (default):. . . . . . . . {0} (default = 'G')\n" +
                    "(N) Number: . . . . . . . . . {0:N}\n" +
                    "(P) Percent:. . . . . . . . . {1:P}\n" +
                    "(R) Round-trip: . . . . . . . {1:R}\n" +
                    "(X) Hexadecimal:. . . . . . . {0:X}\n",
                    - 1234, -1234.565F);
Console.WriteLine(s);

示例输出(en-us文化):

(C) Currency: . . . . . . . . ($1,234.00)
(D) Decimal:. . . . . . . . . -1234
(E) Scientific: . . . . . . . -1.234565E+003
(F) Fixed point:. . . . . . . -1234.57
(G) General:. . . . . . . . . -1234
    (default):. . . . . . . . -1234 (default = 'G')
(N) Number: . . . . . . . . . -1,234.00
(P) Percent:. . . . . . . . . -123,456.50 %
(R) Round-trip: . . . . . . . -1234.565
(X) Hexadecimal:. . . . . . . FFFFFB2E

请注意,您格式化的值应该是数字。 它看起来并不像一个数字的字符串表示,格式是用逗号。


这是最好的格式。 适用于所有这些情况:

String.Format( "{0:#,##0.##}", 0 ); // 0
String.Format( "{0:#,##0.##}", 0.5 ); // 0.5 - some of the formats above fail here. 
String.Format( "{0:#,##0.##}", 12314 ); // 12,314
String.Format( "{0:#,##0.##}", 12314.23123 ); // 12,314.23
String.Format( "{0:#,##0.##}", 12314.2 ); // 12,314.2
String.Format( "{0:#,##0.##}", 1231412314.2 ); // 1,231,412,314.2

String.Format("0,###.###"); also works with decimal places

String.Format("{0:#,###,###.##}", MyNumber)

这会在相关的点上给你逗号。


int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));

int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000




.net