Redondeo expecífico
private string Redondea(string precio, string redondeo) { string retorna; redondeo = redondeo.Replace('.', ','); string valor = precio.Replace('.', ','); string[] resultado = valor.Split(','); int entero = Convert.ToInt32(resultado[0]); int decimales; double calculo = Convert.ToDouble(precio); if (resultado.Count() == 2) { decimales = Convert.ToInt32(resultado[1]); if (decimales.ToString().Length == 1) { decimales = (decimales * 10); } } else { decimales = 00; } if (redondeo != "0,00") { if (decimales.ToString() == redondeo) { calculo = Math.Round(Convert.ToDouble(valor), 2); } else { if (Convert.ToInt32(decimales) >= 50) { if ((redondeo == "0,00") && (decimales != 0)) { calculo = entero + 1; } else { calculo = entero + Convert.ToDouble(redondeo); } } else { if ((redondeo == "0,00") || (decimales == 00)) { calculo = entero; } else { double deci = Convert.ToDouble(redondeo); calculo = (entero - 1) + deci; } } } } else { calculo = Math.Round(Convert.ToDouble(valor), 0); } retorna = calculo.ToString("N"); return retorna; }
Ejemplo de uso:
Redondea("3.06", "0.00"); // Devuelve 3 Redondea("3.06", "0.90"); // Devuelve 2.90 Redondea("3.56", "0.90"); // Devuelve 3.90
