public static partial class DoubleExtensions
public static double RoundUP(this double valor, int decimalDigits = 2)
return (Math.Ceiling(valor * Math.Pow(10, decimalDigits)) / Math.Pow(10, decimalDigits));
public static decimal RoundUP(this decimal valor, int decimalDigits = 2)
var retorno = DoubleExtensions.RoundUP((double)valor, decimalDigits);
return Convert.ToDecimal(retorno);
public static void Main()
Console.WriteLine($"C# Default = \t {valor}");
Console.WriteLine($"C# Round = \t {Math.Round(valor, digits)}");
Console.WriteLine($"C# Round MidpointRounding.ToEven = \t {Math.Round(valor, digits, MidpointRounding.ToEven)}");
Console.WriteLine($"C# Round MidpointRounding.AwayFromZero = \t {Math.Round(valor, digits, MidpointRounding.AwayFromZero)}");
Console.WriteLine($"C# RoundUP = \t {valor.RoundUP(digits)}");