简体   繁体   中英

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";

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

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.

试试这种格式。

{0:#,##0}

你也可以这样做:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM