开发者

C# + String Formatting

I feel like I'm trying to do something simple but I am not getting the result I want. I want to display a basic number, that will always be positive. I do not want any leading zeros but I want thousands separators. For instance, for the following inputs, I want the following outputs:

3 -> 3
30 -> 30
300 -> 300
3000 -> 3,000
30000 -> 30,000
300000 -> 300,000 

Currently, in an attempt to do this, I'm using the following formatting code:

  string text = "*Based on " + String.Format("{0:0,0}", total) + " entries";开发者_JAVA百科

Currently, the output looks like this:

3 -> 03
3000 -> 3,000

You can see how a leading "0" is added when the thousands separator is not necessary. How do I properly format my numbers?

Thank you


string.Format(new CultureInfo("en-US"), "{0:N0}", total)

See: Standard Numeric Format Strings

- or -

string.Format(new CultureInfo("en-US"), "{0:#,#}", total)

See: Custom Numeric Format Strings


Use "#,##0".

See: Quick Reference for .NET Format Strings


In addition to the other great advice, You shouldn't be using the string concatenation operator. Simply do this:

string text = string.Format("*Based on {0:#,##0} entries", total);

This makes it easier to read, and requires less work.


Try this format.

{0:#,##0}


You can also do this:

string text = "*Based on " + total.ToString("#,##0") + " entries"; 


Here's a sample using PowerShell. The important point is that the format string is "{0:n0}".

3, 30, 300, 3000, 30000, 300000, 3000000, 30000000 |
    %{ "{0} -> {0:n0}" -f $_ }

Which produces:

PS C:\Users\Damian> 3, 30, 300, 3000, 30000, 300000, 3000000, 30000000 | %{ "{0} -> {0:n0}" -f $_ }

3 -> 3
30 -> 30
300 -> 300
3000 -> 3,000
30000 -> 30,000
300000 -> 300,000
3000000 -> 3,000,000
30000000 -> 30,000,000
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜