Rounding down to 2 decimal places in c#
c#, decimal, rounding
Solution
The `Math.Round(...)` function has an Enum to tell it what rounding strategy to use. Unfortunately the two defined won't exactly fit your situation.
The two Midpoint Rounding modes are:
- AwayFromZero - When a number is halfway between two others, it is rounded toward the nearest number that is away from zero. (Aka, round up)
- ToEven - When a number is halfway between two others, it is rounded toward the nearest even number. (Will Favor .16 over .17, and .18 over .17)
What you want to use is `Floor` with some multiplication.
var output = Math.Floor((41.75 * 0.1) * 100) / 100;
The `output` variable should have 4.17 in it now.
In fact you can also write a function to take a variable length as well:
public decimal RoundDown(decimal i, double decimalPlaces)
{
var power = Convert.ToDecimal(Math.Pow(10, decimalPlaces));
return Math.Floor(i * power) / power;
}
Problem
How can I multiply two decimals and round the result down to 2 decimal places? For example if the equation is 41.75 x 0.1 the result will be 4.175. If I do this in c# with decimals it will automatically round up to 4.18. I would like to round down to 4.17. I tried using Math.Floor but it just rounds down to 4.00. Here is an example: ``` Math.Floor (41.75 * 0.1); ```