【问题标题】:Add commas in decimal to string将十进制逗号添加到字符串
【发布时间】:2013-09-17 14:48:45
【问题描述】:

我想在十进制中添加一个逗号到字符串转换之类的

对于

decimal number = 1000000000.000;

它应该给

string str = 1,00,00,00,000.00

【问题讨论】:

标签: c# .net string decimal


【解决方案1】:

您可以通过使用正确的CultureInfo 来实现这一点:

decimal input = 1000000000.0000m;
CultureInfo ci = new CultureInfo("hi-IN");
string output = string.Format(ci,"{0:#,#.00}",input);

顺便说一句:跟随CultureInfos 产生正确的输出:

hi,bn,pa,gu,or,ta,te,kn,ml,as,mr,sa,kok,si,ne,
hi-IN,bn-IN,pa-IN,gu-IN,or-IN,ta-IN,te-IN,kn-IN,
ml-IN,as-IN,mr-IN,sa-IN,kok-IN,si-LK,ne-NP,bn-BD,en-IN

【讨论】:

  • 这正是 OP 想要的。 +1
  • @Stephan Bauer 这是很好的研究,但我想实施 King King 的回答
【解决方案2】:

当然,你可以使用一些预定义的文化,但我想介绍这种方式,用NumberGroupSizes指定你想要的任何格式:

CultureInfo ci = new CultureInfo("en-US");
ci.NumberFormat.NumberGroupSizes = new int[] { 3, 2 };
Thread.CurrentThread.CurrentCulture = ci;
Console.WriteLine("{0:#,#.00}", 12345678.12);
//output 
1,23,45,678.12
ci.NumberFormat.NumberGroupSizes = new int[] {4, 2};
//output
12,34,5678.12
//....

【讨论】:

  • 太好了,不知道。 +1
【解决方案3】:

这是一个例子:

http://msdn.microsoft.com/en-us/library/fzeeb5cd.aspx

specifier = "#,#.00#;(#,#.00#)";
Console.WriteLine("{0}: {1}", specifier, (value*-1).ToString(specifier));
// Displays:    #,#.00#;(#,#.00#): (16,325.62)

【讨论】:

  • 什么是value?写-value而不是value*-1会更好吗?
【解决方案4】:

你可以这样做,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2015-11-03
    • 2023-04-11
    相关资源
    最近更新 更多