views:

340

answers:

5

Using C#, I want to format a decimal to only display two decimal places and then I will take that decimal and subtract it to another decimal. I would like to be able to do this without having to turn it into a string first to format and then convert it back to a decimal. I'm sorry I forget to specify this but I don't want to round, I just want to chop off the last decimal point. Is there a way to do this?

+2  A: 

Math.Round Method (Decimal, Int32)

dommer
+1  A: 

You don't want to format it then, but to round it. Try the Math.Round function.

David M
A: 

Take a look at Math.Round

bendewey
A: 

You can use: Math.Round(number,2); to round a number to two decimal places.

See this specific overload of Math.Round for examples.

Reed Copsey
+6  A: 

If you don't want to round the decimal, you can use Decimal.Truncate. Unfortunately, it can only truncate ALL of the decimals. To solve this, you could multiply by 100, truncate and divide by 100, like this:

decimal d = ...;
d = Decimal.Truncate(d * 100) / 100;

And you could create an extension method if you are doing it enough times

public static class DecimalExtensions
{
  public static decimal TruncateDecimal(this decimal @this, int places)
  {
    int multipler = (int)Math.Pow(10, places);
    return Decimal.Truncate(@this * multipler) / multipler;
  }
}
Tommy Carlier