public static decimal IntegerRound(decimal amount, IntegerRounding rounding) { var rounded = Math.Round(amount); if (rounding.MinimalAmount == 1) { return rounded; } Func<decimal, decimal> roundingMethod; switch (rounding.Mode) { case IntegerRoundingMode.Ceiling: roundingMethod = Math.Ceiling; break; case IntegerRoundingMode.Floor: roundingMethod = Math.Floor; break; case IntegerRoundingMode.Round: roundingMethod = Math.Round; break; default: roundingMethod = Math.Round; break; } return roundingMethod(rounded / rounding.MinimalAmount) * rounding.MinimalAmount; }
public Rounding(int floatPrecision, IntegerRounding? integerRounding) : this() { Argument.Satisfies(floatPrecision, x => x >= 0 && x <= 28, "floatPrecision"); FloatPrecision = floatPrecision; IntegerRounding = integerRounding; }
public Rounding(IntegerRounding integerRounding) : this(0, integerRounding) { }