Search code examples
c#formattingdecimal

Best way to display decimal without trailing zeroes


Is there a display formatter that will output decimals as these string representations in c# without doing any rounding?

// decimal -> string

20 -> 20
20.00 -> 20
20.5 -> 20.5
20.5000 -> 20.5
20.125 -> 20.125
20.12500 -> 20.125
0.000 -> 0

{0.#} will round, and using some Trim type function will not work with a bound numeric column in a grid.


Solution

  • Do you have a maximum number of decimal places you'll ever need to display? (Your examples have a max of 5).

    If so, I would think that formatting with "0.#####" would do what you want.

        static void Main(string[] args)
        {
            var dList = new decimal[] { 20, 20.00m, 20.5m, 20.5000m, 20.125m, 20.12500m, 0.000m };
    
            foreach (var d in dList)
                Console.WriteLine(d.ToString("0.#####"));
        }