none
Problema de Conversão RRS feed

  • Pergunta

  • Olá Pessoal tenho o seguinte:

    Dim strValor = String.Format("{0:N2}","2333.56")
    Como resultado teria: 2.333,56

    Agora to tendo problema para fazer o inverso, no caso voltar ao que era antes: 2333.56

    Desde já grato pela atenção.




    Juscilesio
    • Movido Rogerio Jerez terça-feira, 10 de novembro de 2009 12:18 Movido para o Fórum Apropriado (De:Conteúdo técnico dentro do MSDN)
    • Movido Harley AraujoModerator quinta-feira, 19 de novembro de 2009 13:58 (De:Onde está o fórum para...?)
    quarta-feira, 29 de julho de 2009 20:51

Respostas

  • Juscilesio,

         Espero que vc já tenha encontrado uma resposta para este problema mas caso não tenha encontrado, espero poder te ajudar.

         Pelo que pude ver, o seu problema está relacionado com a utilização de CULTURAS ligadas as conversões numérias.
        
         Quando vc possue um número ele podera ser "escrito para o usuário" em qualquer idioma/cultura basta você indicar qual a cultura desejada e pronto. Para "voltar" com o numero exibiro ( que agora, provavelmente é um texto ) basta você realizar a conversão para o tipo desejado e indicar em qual cultura o numero se encontra no momento.

    Ex:
    // Indicando a cultura da aplicação
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt-BR");
    
    // Indicando a cultura padrão para exibição dos dados ( UI )
    System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
    
    // Numero que será convertido
    double valor = 2333.56;
    
    // Convertendo o número acima para um texto 
    // ( seguindo a cultura definida para a UI )
    string strValor = String.Format("{0:N2}", valor);
    
    // Voltando o valor de TEXTO para "NUMERO" com base na cultura
    // ATUAL indicada para o numero
    valor = double.Parse(strValor, new System.Globalization.CultureInfo("pt-BR"));
    
    // Exibindo o valor do numero ( já convertido em texto )
    Console.WriteLine("strValor: " + strValor);
    
    // Exibindo o valor do numero para uma cultura diferente
    // da que foi definida para a UI com o usuário
    Console.WriteLine("valor: " + valor.ToString(new System.Globalization.CultureInfo("en-US")));
    
    // Esperando o usuário precionar uma tela
    Console.ReadKey();
    
    o trecho de código acima foi criado em uma aplicação do tipo Console.



    Espero ter ajudado.
    Qualquer problema, coloque aqui no forum para que toda a comunidade possa estar te ajudando.

    Rafael F. P. / MCP ID: 5904444
    • Sugerido como Resposta Rafael F P terça-feira, 11 de agosto de 2009 17:37
    • Marcado como Resposta Harley AraujoModerator quinta-feira, 19 de novembro de 2009 13:58
    segunda-feira, 10 de agosto de 2009 19:26

Todas as Respostas

  • Juscilesio,

         Espero que vc já tenha encontrado uma resposta para este problema mas caso não tenha encontrado, espero poder te ajudar.

         Pelo que pude ver, o seu problema está relacionado com a utilização de CULTURAS ligadas as conversões numérias.
        
         Quando vc possue um número ele podera ser "escrito para o usuário" em qualquer idioma/cultura basta você indicar qual a cultura desejada e pronto. Para "voltar" com o numero exibiro ( que agora, provavelmente é um texto ) basta você realizar a conversão para o tipo desejado e indicar em qual cultura o numero se encontra no momento.

    Ex:
    // Indicando a cultura da aplicação
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt-BR");
    
    // Indicando a cultura padrão para exibição dos dados ( UI )
    System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
    
    // Numero que será convertido
    double valor = 2333.56;
    
    // Convertendo o número acima para um texto 
    // ( seguindo a cultura definida para a UI )
    string strValor = String.Format("{0:N2}", valor);
    
    // Voltando o valor de TEXTO para "NUMERO" com base na cultura
    // ATUAL indicada para o numero
    valor = double.Parse(strValor, new System.Globalization.CultureInfo("pt-BR"));
    
    // Exibindo o valor do numero ( já convertido em texto )
    Console.WriteLine("strValor: " + strValor);
    
    // Exibindo o valor do numero para uma cultura diferente
    // da que foi definida para a UI com o usuário
    Console.WriteLine("valor: " + valor.ToString(new System.Globalization.CultureInfo("en-US")));
    
    // Esperando o usuário precionar uma tela
    Console.ReadKey();
    
    o trecho de código acima foi criado em uma aplicação do tipo Console.



    Espero ter ajudado.
    Qualquer problema, coloque aqui no forum para que toda a comunidade possa estar te ajudando.

    Rafael F. P. / MCP ID: 5904444
    • Sugerido como Resposta Rafael F P terça-feira, 11 de agosto de 2009 17:37
    • Marcado como Resposta Harley AraujoModerator quinta-feira, 19 de novembro de 2009 13:58
    segunda-feira, 10 de agosto de 2009 19:26
  • Ola Rafael, muito obriago pela atenção.
    Resolvi o problema fazendo algo meio tosco...rsrsrs
    Vou trocar pela sua solução, que é bem mais plausível...

    Muito obrigado mesmo.

    Atte.
    Juscilesio
    segunda-feira, 17 de agosto de 2009 14:24