[ACCEPTED]-How do I format to only include decimal if there are any-.net

Accepted answer
Score: 31
    decimal one = 1000M;
    decimal two = 12.5M;

    Console.WriteLine(one.ToString("0.##"));
    Console.WriteLine(two.ToString("0.##"));

0

Score: 25

Updated following comment by user1676558

Try this:

decimal one = 1000M;    
decimal two = 12.5M;    
decimal three = 12.567M;    
Console.WriteLine(one.ToString("G"));    
Console.WriteLine(two.ToString("G"));
Console.WriteLine(three.ToString("G"));

For a decimal value, the default 9 precision for the "G" format specifier 8 is 29 digits, and fixed-point notation 7 is always used when the precision is omitted, so 6 this is the same as "0.#############################".

Unlike 5 "0.##" it will display all significant 4 decimal places (a decimal value can not 3 have more than 29 decimal places).

The "G29" format 2 specifier is similar but can use scientific 1 notation if more compact (see Standard numeric format strings).

Thus:

decimal d = 0.0000000000000000000012M;
Console.WriteLine(d.ToString("G"));  // Uses fixed-point notation
Console.WriteLine(d.ToString("G29"); // Uses scientific notation

More Related questions