Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# MVC.Net format currency without decimals

I'm looking for a DataFormatString that will display a float as a currency. But omit the decimal values if they're irrelevant (0's).

At the moment I'm using:

[DisplayFormat(DataFormatString = "{0:C}")]

On my models. This is displaying as a currency correctly. I've not been able to find anywhere that details what changes I need to make to omit the decimal places?

like image 416
Ben Ford Avatar asked Nov 05 '13 22:11

Ben Ford


1 Answers

[DisplayFormat(DataFormatString = "{0:C0}")]

This should give you 0 decimals. But automatically rounds! so if you got ,56 it will round up to 1

20000,00 => 20000 €

20000,56 => 20001 €

20000,49 => 20000 €

/edit: I have borrowed an idea from here: c# Decimal to string for currency

If you can convert your float value to decimal, you can use this Extensionmethod to omit the 0. It truncates the decimal and if this truncated value is equal to the original value, it cuts the zeros. If not, it displays 2 digits. I know this is no Dataformat string, but I'm not quiet sure, it can be done in an as simple way as an annotation.

public static string ToCurrencyString(this decimal d)
{
    return d.Equals(Decimal.Truncate(d)) ? d.ToString("0 €") : d.ToString("0.00 €");
}
like image 159
Marco Avatar answered Oct 13 '22 00:10

Marco