none
Convertir string a decimal RRS feed

  • Pergunta

  • Estoy intentando convertir un string a decimal para poder operar con él. Me resulta imposible, lo he intentado todo pero me sigue dejando el punto. Os envío un ejemplo con la depuración para que veais lo que me devuelve en cada caso. La configuración del PC esta en español.

    Algo debo estar haciendo mal pero ya estoy bloqueado. Por favor ¿Me podeis echar una mano? 

    Gracias anticipadas.

    Saludos.

    quarta-feira, 19 de fevereiro de 2020 12:37

Respostas

  • Hola, en tu primera prueba puedes ver que el tipo convertido ya es un decimal (FIJATE en la tercera columna donde se especifica el tipo de la variable valor2). La conversión a decimal en ese punto YA es correcta. 

    Me resulta imposible, lo he intentado todo pero me sigue dejando el punto 

    Un decimal siempre trabaja con punto, es en su visualización a cadena cuando se usan los formateadores para aplicar en cada caso según la configuración regional.

    Lo dicho, en tu primera prueba ya tienes un correctamente convertido desde una cadena.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Sugerido como Resposta Diana AcuñaModerator quarta-feira, 19 de fevereiro de 2020 15:22
    • Marcado como Resposta Adolfo33 terça-feira, 25 de fevereiro de 2020 09:29
    quarta-feira, 19 de fevereiro de 2020 13:11
    Moderador

Todas as Respostas

  • Hola, en tu primera prueba puedes ver que el tipo convertido ya es un decimal (FIJATE en la tercera columna donde se especifica el tipo de la variable valor2). La conversión a decimal en ese punto YA es correcta. 

    Me resulta imposible, lo he intentado todo pero me sigue dejando el punto 

    Un decimal siempre trabaja con punto, es en su visualización a cadena cuando se usan los formateadores para aplicar en cada caso según la configuración regional.

    Lo dicho, en tu primera prueba ya tienes un correctamente convertido desde una cadena.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Sugerido como Resposta Diana AcuñaModerator quarta-feira, 19 de fevereiro de 2020 15:22
    • Marcado como Resposta Adolfo33 terça-feira, 25 de fevereiro de 2020 09:29
    quarta-feira, 19 de fevereiro de 2020 13:11
    Moderador
  • hol

    No entiendo cual es el problema si alli observo que la variable "valor2" tiene la conversion a decimal correcta

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    quarta-feira, 19 de fevereiro de 2020 13:26
  • No, está con punto, es un efecto óptico.
    quarta-feira, 19 de fevereiro de 2020 15:40
  • Hola. Pero es correcto. Tal y como te dije en mi respuesta si te fijas en su tipo verás que es decimal. Puedes operar esa variable con otros decimales y lo comprobarás. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    quarta-feira, 19 de fevereiro de 2020 16:23
    Moderador
  • El tema de la coma o punto en decimales depende de la regionalización de tu sistema operativo. Deberías comprobar el separador de miles como lo tienes configurado según este aspecto.


    quarta-feira, 19 de fevereiro de 2020 17:37
  • Te anexo el código que utilizo para convertir el texto de los TextBox a numero.

    Primero Controlo los errores con un valor de verdadero o falso, para asegurarme de que se pueda realizar la conversión sin problema , ya que por un error de captura la cadena podría traer caracteres que no se puedan interpretar como numero y se generaría un error.

            private Boolean  ConvertirEnNumero(string Texto)

            {
                Boolean esNumero = false;
                try
                {
                    double.Parse(Texto != "" ? Texto : "0");
                    esNumero = true;
                }
                catch (Exception)
                { esNumero = false; }
                return esNumero;
            }

    Despues la puedo utilizar en cualquier parte del codigo.

                    if (ConvertirEnNumero(TxtbCostoMNPart.Text))
                    { Partida.CostoMN = double.Parse(TxtbCostoMNPart.Text != "" ? TxtbCostoMNPart.Text : "0"); }

    Solo utiliza el tipo de dato correcto, si necesitas convertir a enteros, entonces utiliza int.Parse

    int Indice = int.Parse(((ImageButton)sender).CommandArgument);

    quarta-feira, 19 de fevereiro de 2020 19:31
  • Te anexo el código que utilizo para convertir el texto de los TextBox a numero.

    Primero Controlo los errores con un valor de verdadero o falso, para asegurarme de que se pueda realizar la conversión sin problema , ya que por un error de captura la cadena podría traer caracteres que no se puedan interpretar como numero y se generaría un error.

            private Boolean  ConvertirEnNumero(string Texto)

            {
                Boolean esNumero = false;
                try
                {
                    double.Parse(Texto != "" ? Texto : "0");
                    esNumero = true;
                }
                catch (Exception)
                { esNumero = false; }
                return esNumero;
            }

    Despues la puedo utilizar en cualquier parte del codigo.

                    if (ConvertirEnNumero(TxtbCostoMNPart.Text))
                    { Partida.CostoMN = double.Parse(TxtbCostoMNPart.Text != "" ? TxtbCostoMNPart.Text : "0"); }

    Solo utiliza el tipo de dato correcto, si necesitas convertir a enteros, entonces utiliza int.Parse

    int Indice = int.Parse(((ImageButton)sender).CommandArgument);

    Hola, indicarte que existe el método Decimal.TryParse Método e inclusive para entero que hace esa validación. Devuelve False si no se puede convertir a numérico y si lo es, te devuelve en el parámetro out el valor ya convertido


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    quarta-feira, 19 de fevereiro de 2020 20:31
    Moderador
  • Tienes razón, creo que tenia un error de concepto. Ya lo he solucionado.

    Muchas gracias por contestar.

    terça-feira, 25 de fevereiro de 2020 09:29
  • Tenía la misma duda y las respuestas me han ayudado un montón. Gracias
    terça-feira, 25 de fevereiro de 2020 10:25