HiveBrain v1.2.0
Get Started
← Back to all entries
snippetcsharpCritical

Using String Format to show decimal up to 2 places or simple integer

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
stringintegerusingplacesdecimalsimpleformatshow

Problem

I have got a price field to display which sometimes can be either 100 or 100.99 or 100.9, What I want is to display the price in 2 decimal places only if the decimals are entered for that price , for instance if its 100 so it should only show 100 not 100.00 and if the price is 100.2 it should display 100.20 similarly for 100.22 should be same .
I googled and came across some examples but they didn't match exactly what i wanted :

// just two decimal places
String.Format("{0:0.00}", 123.4567);      // "123.46"
String.Format("{0:0.00}", 123.4);         // "123.40"
String.Format("{0:0.00}", 123.0);         // "123.00"

Solution

An inelegant way would be:

var my = DoFormat(123.0);


With DoFormat being something like:

public static string DoFormat( double myNumber )
{
    var s = string.Format("{0:0.00}", myNumber);

    if ( s.EndsWith("00") )
    {
        return ((int)myNumber).ToString();
    }
    else
    {
        return s;
    }
}


Not elegant but working for me in similar situations in some projects.

Code Snippets

var my = DoFormat(123.0);
public static string DoFormat( double myNumber )
{
    var s = string.Format("{0:0.00}", myNumber);

    if ( s.EndsWith("00") )
    {
        return ((int)myNumber).ToString();
    }
    else
    {
        return s;
    }
}

Context

Stack Overflow Q#6951335, score: 178

Revisions (0)

No revisions yet.