Remove $ from .ToString(“{0:C}”) formatted number

2020-08-09 05:08发布

问题:

Basically I am formatting numbers like this

@String.Format("{0:C}", Model.Price)

The result is $2,320,000.00

My desired result, however, is 2,320,000.00 just without $, respectively. How can I attain this, while still taking advantage of .nets localization handling?

Edit

and what if i want that change my class so that when ever a person try to get Price , he gets this kind of formatted price . Here is my class

public class Listing : DomainObject
{   
    public decimal Price { get; set; }
    public decimal Commission { get; set; }
}

回答1:

Use N instead of C as your format specifier:

@String.Format("{0:N}", Model.Price)

"C" or "c" Currency Result: A currency value.

123.456 ("C", en-US) -> $123.46

"N" or "n" Number Result: Integral and decimal digits, group separators, and a decimal

1234.567 ("N", en-US) -> 1,234.57

I.e. you were getting a currency symbol because you were asking for one.



回答2:

You'll want to make the Price property a string, and have a backing field of a decimal, then in the getter of your Price property do your string format.

private decimal price;

public String Price 
{
   get { return String.Format("{0:N}", price); }
}

Then you can use @Model.Price for display.



回答3:

Set CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol to string.Empty.



回答4:

Rather use {0:F2} as this will not include Comma',' like in {0:C}.

Console.Write("{0:F2}", 2.5); //2.50
Console.Write("{0:F0}", 25);  //25