Rounding down to 2 decimal places in c#

前端 未结 7 2267
渐次进展
渐次进展 2020-12-03 10:07

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

7条回答
  •  甜味超标
    2020-12-03 10:31

    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:

    1. AwayFromZero - When a number is halfway between two others, it is rounded toward the nearest number that is away from zero. (Aka, round up)
    2. 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;
    }
    

提交回复
热议问题