/// <summary> /// Rounds the specified value. /// </summary> /// <param name="value">The value.</param> /// <param name="RoundMode">The round mode.</param> /// <param name="decimals">The decimals.</param> /// <param name="MidPointRounding">The mid point rounding.</param> /// <returns></returns> public static decimal Round(decimal value, Calc.RoundMode RoundMode, int decimals, System.MidpointRounding MidPointRounding) { switch (RoundMode) { case RoundMode.RoundUp: decimal OriginalDecimal = default(decimal); if (decimals == 0) { OriginalDecimal = value; value = Math.Truncate(value); if (OriginalDecimal != value) { value = value + 1; } } else { decimal MultiplyPower = Convert.ToDecimal(Math.Pow(10, decimals)); value = value * MultiplyPower; OriginalDecimal = value; value = Math.Truncate(value); if (OriginalDecimal != value) { value = value + 1; } value = SafeDiv(value, MultiplyPower); } return(value); case RoundMode.RoundDown: if (decimals == 0) { value = Math.Truncate(value); } else { decimal MultiplyPower = Convert.ToDecimal(Math.Pow(10, decimals)); value = value * MultiplyPower; value = Math.Truncate(value); value = SafeDiv(value, MultiplyPower); } return(value); case RoundMode.RoundUpOrDown: return(Math.Round(value, decimals, MidPointRounding)); } //Should never happen return(0); }
/// <summary> /// Rounds the specified value. /// </summary> /// <param name="value">The value.</param> /// <param name="RoundMode">The round mode.</param> /// <param name="decimals">The decimals.</param> /// <returns></returns> public static decimal Round(decimal value, Calc.RoundMode RoundMode, int decimals) { return(Round(value, RoundMode, decimals, System.MidpointRounding.AwayFromZero)); }