none
calculo decimal a entero RRS feed

  • Pregunta

  • buenos dias foreros tengo un formulario hecho en visual studio 2015 y sql server 2014 en el formulario donde necesito redondear los resultados 

    este el codigo que tengo uno es el 5%, 7%,10%

    entoces en total pagar necesito que salga redondeados el descuento y total a pagar por ejemplo en el descuento del siete % sale resultado 103.6 deberia ser 104    

    5.543 es decir $1 a 5$ se redondea hacia abajo se cobrara el precio de la decena anterior 5.540

    5.546 y de $6 a $9 se rendondea hacia arriaba  se cobrara el precio de la decena superior 5.550

    private void CalcularTotalCaja()
            {
                var total = Detalles.Sum(x => x.Importe);
                decimal descuentocinco = 0;
                decimal desucentosiete = 0;
                decimal descuentodiez = 0;
               
              
                    if (RbPorcentajecinco.Checked == true)
                    {
                        descuentocinco = Math.Round(Convert.ToDecimal(total * 0.05M), 2);
                        TxtDescuento.Text = descuentocinco.ToString("N2");
                    }
    
    
                    else if (RbPorcentajesiete.Checked == true)
               
                    
                    {
                        desucentosiete = Math.Round(Convert.ToDecimal(total * 0.07M), 2);
                        TxtDescuento.Text = desucentosiete.ToString("N2");
                    }
    
      
    
                    else if (RbPorcentajediez.Checked == true)
                    {
                        descuentodiez = Math.Round(Convert.ToDecimal(total * 0.1M), 2);
                        TxtDescuento.Text = descuentodiez.ToString("N2");
                    
                    }
    
               
                    else if (RbSindescuento.Checked == true)
                    {
                        TxtDescuento.Clear();
                        TxtDescuento.Text = "0";
                        //var dscto = Convert.ToDecimal(TxtDescuento.Text);
                        //var montopagar = (total - dscto);
                        LblTotalVenta.Text = total.ToString("#,##0.00");
                        LblTotalPagar.Text = total.ToString("#,##0.00");
                    }
    
                var dscto = Math.Round(Convert.ToDecimal(TxtDescuento.Text)) ;
                //var dscto = Convert.ToDecimal(TxtDescuento.Text);
               
                var montopagar = (total - dscto);
                LblTotalPagar.Text = montopagar.ToString("#,##0.00");
               
            }


    • Editado djnilo viernes, 14 de junio de 2019 15:50
    viernes, 14 de junio de 2019 14:36

Todas las respuestas

  • Hola 
    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comento que estaremos realizando una revisión a profundidad acerca del inconveniente que se te está presentando.
    Proporcionaremos una respuesta lo más pronto posible.

    Gracias por usar los foros de MSDN.

    Erick Rivera

     ____
    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. 
    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    viernes, 14 de junio de 2019 16:46
  • hola

    Cuando defines los nros 5.543 no queda claro si ese . (punto) es decimal o el indicador de miles es el valor 5mil quinientos o el 5 con 500 ?

    Para redondear tienes las funciones

    Math.Ceiling()

    o

    Math.Floor()

    segun quieras redondear para arriba o para abajo la cantidad de decimales

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 14 de junio de 2019 17:24
  • muchas gracias por responder leadro 5.500 pero como lo haria que dices tu 

    private void CalcularTotalCaja()
            {
                var total = Detalles.Sum(x => x.Importe);
                decimal descuento = 0;
              
    
                if (RbPorcentajecinco.Checked)
                {
                    descuento = 0.05M;
                }
                else if (RbPorcentajesiete.Checked)
                {
                    descuento = 0.07M;
                }
                else if (RbPorcentajesiete.Checked)
                {
                    descuento = 0.10M;
                }
    
                var dscto = Math.Round(descuento);
                var montopagar = Math.Round((total - dscto));
    
                LblTotalVenta.Text = total.ToString("#,##0.00");
                TxtDescuento.Text = Math.Ceiling(dscto());// error
                LblTotalPagar.Text = montopagar.ToString("#,##0.00");
            }
    habria que ocupar un if y else segun condicion se redondea asia abajo o asi arriba


    • Editado djnilo viernes, 14 de junio de 2019 21:45
    viernes, 14 de junio de 2019 21:44