## Problem

In C#, how can I convert a Double to a String with only two decimal places?

If I use String.Format(“0:0.00 percent “, myDoubleValue), the amount gets rounded, and I just want a straight truncation. I also want the String conversion to be culturally appropriate.

Asked by kjv

## Solution #1

Here’s what I use:

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

For instance:

If you dial 50.947563 and enter the following, the following will occur:

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

Now that you have your answer trimmed, simply perform the following to format the string:

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

Answered by Kyle Rosendo

## Solution #2

Thanks to.##, the numbers are rounded to two decimal places but only show up to two decimal places (removing any trailing zeros).

```
decimal d0 = 24.154m;
decimal d1 = 24.155m;
decimal d2 = 24.1m;
decimal d3 = 24.0m;
d0.ToString("0.##"); //24.15
d1.ToString("0.##"); //24.16 (rounded up)
d2.ToString("0.##"); //24.1
d3.ToString("0.##"); //24
```

http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/

Answered by Brian Ogden

## Solution #3

I recommend that you truncate first, then format:

```
double a = 123.4567;
double aTruncated = Math.Truncate(a * 100) / 100;
CultureInfo ci = new CultureInfo("de-DE");
string s = string.Format(ci, "{0:0.00}%", aTruncated);
```

Use the constant 100 to truncate two digits; use a 1 followed by as many zeros as you want after the decimal point. To alter the formatting output, use the culture name.

Answered by CesarGon

## Solution #4

I make advantage of pricing. For retrieving the leading 0s, use ToString(“0.00”)

Answered by CMS

## Solution #5

The most straightforward technique is to utilize numeric format strings:

```
double total = "43.257"
MessageBox.Show(total.ToString("F"));
```

Answered by Harambe Attack Helicopter

**Post is based on https://stackoverflow.com/questions/2453951/c-sharp-double-tostring-formatting-with-two-decimal-places-but-no-rounding**