none
Converter String para decimal RRS feed

  • Pergunta

  • Boa tarde, estou desenvolvendo uma rotina em que recebo o valor "0000000249748" gostaria de converte-lo para decimal. Estou usando: Format(Convert.ToDecimal("0000000249748"), "##,##0.00") ele me retorna o valor 249.748,00 quando o certo seria retornar 2.497,48. Como faço para retornar o valor certo?
    sexta-feira, 11 de junho de 2010 15:31

Respostas

  • Tente este artigo:

    http://www.linhadecodigo.com.br/Artigo.aspx?id=2910

    propondo o seguinte método:

    protected string FormataString(string mascara, string valor)
    {
        string novoValor = string.Empty;
        int posicao = 0;

        for (int i = 0; mascara.Length > i; i++)
        {
            if (mascara[i] == '#')
            {
                if (valor.Length > posicao)
                {
                    novoValor = novoValor + valor[posicao];
                    posicao++;
                }
                else
                    break;
            }
            else
            {
                if (valor.Length > posicao)
                    novoValor = novoValor + mascara[i];
                else
                    break;
            }
        }
        return novoValor;
    }

    e o uso:

    //Formatando CPF
    Response.write(FormataString(“###.###.###-##”, “09289209309”));

    //Formatando Data
    Response.write(FormataString(“##/##/####”, “12092010”));

    //Formata CEP
    Response.write(FormataString(“##.###-###”, “70000000”));

    //Formata valor
    Response.write(FormataString(“##,##”, “2309”));

    Não é muito elegante, eu sei, mas faria assim:

    string str =  FormatarString("#.###,##", Convert.ToString(int.Parse("0000000249748")));

    Resultado: 2.497,48

    Abs,

    Rodolfo Paoni


    Rodolfo Paoni
    sexta-feira, 11 de junho de 2010 17:47

Todas as Respostas

  • Veja a CDbl(expression) ou então convert.ToDouble(expression), veja o link:

    http://msdn.microsoft.com/en-us/library/s2dy91zy(VS.80).aspx ou então
    http://msdn.microsoft.com/en-us/library/system.convert.todouble(VS.80).aspx ou até
    http://msdn.microsoft.com/en-us/library/system.convert.aspx

     

     

    acho que isso vai te ajudar!



    Wesley Reuel Se foi útil, marque como tal! Save The Programmer, Save The World!
    sexta-feira, 11 de junho de 2010 17:24
  • Tente este artigo:

    http://www.linhadecodigo.com.br/Artigo.aspx?id=2910

    propondo o seguinte método:

    protected string FormataString(string mascara, string valor)
    {
        string novoValor = string.Empty;
        int posicao = 0;

        for (int i = 0; mascara.Length > i; i++)
        {
            if (mascara[i] == '#')
            {
                if (valor.Length > posicao)
                {
                    novoValor = novoValor + valor[posicao];
                    posicao++;
                }
                else
                    break;
            }
            else
            {
                if (valor.Length > posicao)
                    novoValor = novoValor + mascara[i];
                else
                    break;
            }
        }
        return novoValor;
    }

    e o uso:

    //Formatando CPF
    Response.write(FormataString(“###.###.###-##”, “09289209309”));

    //Formatando Data
    Response.write(FormataString(“##/##/####”, “12092010”));

    //Formata CEP
    Response.write(FormataString(“##.###-###”, “70000000”));

    //Formata valor
    Response.write(FormataString(“##,##”, “2309”));

    Não é muito elegante, eu sei, mas faria assim:

    string str =  FormatarString("#.###,##", Convert.ToString(int.Parse("0000000249748")));

    Resultado: 2.497,48

    Abs,

    Rodolfo Paoni


    Rodolfo Paoni
    sexta-feira, 11 de junho de 2010 17:47
  • Vlw Rodolfo essa função funcionou legal.

    Obrigado a todos.

    segunda-feira, 14 de junho de 2010 13:51
  • Por nada, valeu.

    Abs,

    Rodolfo Paoni


    Rodolfo Paoni
    segunda-feira, 14 de junho de 2010 18:17