Reputation: 266950
Have decimal amount, want to trim to 2 decimal places if present
Upvotes: 11
Views: 34621
Reputation: 2796
If its just for display purposes, you can use:
Console.Out.WriteLine("Number is: {0:F2}", myDecimalNumber);
Upvotes: 1
Reputation: 51319
This should work (EDIT: Fixed to remove rounding):
((Int32)(value * Math.Pow(10, decimalPlaces))) / (Math.Pow(10D, decimalPlaces));
Upvotes: 0
Reputation: 354416
decimal.Truncate(myDecimal * 100) / 100
This would cut away everything following the first two decimal places. For rounding see Jon's answer.
Upvotes: 12
Reputation: 1500055
Have you tried using value = Decimal.Round(value, 2)
?
For example:
using System;
class Test
{
static void Main()
{
decimal d = 1234.5678m;
Console.WriteLine("Before: {0}", d); // Prints 1234.5678
d = decimal.Round(d, 2);
Console.WriteLine("After: {0}", d); // Prints 1234.57
}
}
Note that this is rounding rather than just trimming (so here it's rounded up)... what exactly do you need? Chances that the Decimal
struct supports whatever you need to do. Consult MSDN for more options.
Upvotes: 24