none
Para pasar string Importe a decimal, cambiar punto por coma decimal. RRS feed

  • Pregunta

  • Hola:

    Siempre tenía entendido que en programación se utilizaba el punto como separador decimal. Pero a la hora de convertir en mi proyecto y para que me mantenga los decimales, he tenido que cambiar, el string que trae el importe, el punto por la coma para que me respete los decimales.

     public JsonResult FormaDePago (string total,DateTime fechaFactura, Guid formaPagoId)
            {
                FormaPagoCampos fp = new FormaPagoCampos();
                decimal _total;
                if (decimal.TryParse(total.Replace(".",","),out _total))
                {
                    fp = FPago.Calculo(_total, fechaFactura, formaPagoId, _empresaId);
                }
                
    
                return Json(fp, JsonRequestBehavior.AllowGet);
            }

    Un Saludo.

    domingo, 17 de noviembre de 2019 12:13

Respuestas

  • decimal.TryParse(total, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out _total)

    • Marcado como respuesta elturle domingo, 17 de noviembre de 2019 15:21
    domingo, 17 de noviembre de 2019 12:50
  • Recuerda que cuando planteaste parte de este tema en otro hilo te recomendé lo siguiente:

    "Y luego dentro del método haces un "Parse" o "TryParse" de ese string haciendo uso de las muchas sobrecargas que tienen estos métodos para procesar los separadores en el formato que quieras."

    Precisamente en una respuesta anterior te acaban de sugerir una de las muchas sobrecargas del TryParse que permite especificar un formato para los números.

    Es importante que lo hagas así en lugar de intentar manipular por tu cuenta el formato de la cadena (usando Replace) y luego aplicando la misma sobrecarga "de siempre". La razón es que tal como lo tienes hecho funcionará en unos sistemas sí y otros no. La variante del TryParse que estás usando utiliza la configuración de números del CurrentCulture del programa, que puede variar según dónde se instale y cómo se configure. Por lo tanto, el Replace que haces previamente podría funcionar o no funcionar dependiendo de la configuración actual.

    • Marcado como respuesta elturle domingo, 17 de noviembre de 2019 15:21
    domingo, 17 de noviembre de 2019 13:57

Todas las respuestas

  • decimal.TryParse(total, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out _total)

    • Marcado como respuesta elturle domingo, 17 de noviembre de 2019 15:21
    domingo, 17 de noviembre de 2019 12:50
  • Recuerda que cuando planteaste parte de este tema en otro hilo te recomendé lo siguiente:

    "Y luego dentro del método haces un "Parse" o "TryParse" de ese string haciendo uso de las muchas sobrecargas que tienen estos métodos para procesar los separadores en el formato que quieras."

    Precisamente en una respuesta anterior te acaban de sugerir una de las muchas sobrecargas del TryParse que permite especificar un formato para los números.

    Es importante que lo hagas así en lugar de intentar manipular por tu cuenta el formato de la cadena (usando Replace) y luego aplicando la misma sobrecarga "de siempre". La razón es que tal como lo tienes hecho funcionará en unos sistemas sí y otros no. La variante del TryParse que estás usando utiliza la configuración de números del CurrentCulture del programa, que puede variar según dónde se instale y cómo se configure. Por lo tanto, el Replace que haces previamente podría funcionar o no funcionar dependiendo de la configuración actual.

    • Marcado como respuesta elturle domingo, 17 de noviembre de 2019 15:21
    domingo, 17 de noviembre de 2019 13:57