C# Double - ToString() formatting with two decimal places but no rounding

kjv picture kjv · Mar 16, 2010 · Viewed 413.7k times · Source

How do I format a Double to a String in C# so as to have only two decimal places?

If I use String.Format("{0:0.00}%", myDoubleValue) the number is then rounded and I want a simple truncate without any rounding. I also want the conversion to String to be culture sensitive.

Answer

Kyle Rosendo picture Kyle Rosendo · Mar 16, 2010

I use the following:

double x = Math.Truncate(myDoubleValue * 100) / 100;

For instance:

If the number is 50.947563 and you use the following, the following will happen:

- Math.Truncate(50.947563 * 100) / 100;
- Math.Truncate(5094.7563) / 100;
- 5094 / 100
- 50.94

And there's your answer truncated, now to format the string simply do the following:

string s = string.Format("{0:N2}%", x); // No fear of rounding and takes the default number format