Use Math.Floor if you want to round down the value, or Math.Round if you want to get an exact round. Math.Truncate simply removes the decimal part of the number, so you get bad results for negative numbers:
var result = Math.Floor(number * 100) / 100;
Math.Floor always returns the smallest integral value that is lesser (floor) or greater (ceiling) than the specified value. So you don't get a correct rounding. Example:
Math.Floor(1.127 * 100) / 100 == 1.12 // Should be 1.13 for an exact round
Math.Ceiling(1.121 * 100) / 100 == 1.13 // Should be 1.12 for an exact round
Always prefer the version of Math.Round containing the mid-point rounding parameter. This parameter specifies how to handle mid-point values (5) as the last digit.
If you don't specify AwayFromZero as the value for the parameter, you'll get the default behaviour, which is ToEven.
For example, using ToEven as the rounding method, you get:
Math.Round(2.025, 2) == 2.02
Math.Round(2.035, 2) == 2.04
Instead, using the MidPoint.AwayFromZero parameter:
Math.Round(2.025, 2, MidpointRounding.AwayFromZero) == 2.03
Math.Round(2.035, 2, MidpointRounding.AwayFromZero) == 2.04
So, for a normal rounding, it's best to use this code:
var value = 2.346;
var result = Math.Round(value, 2, MidpointRounding.AwayFromZero);