none
Problema de Conversão

    Question

  • 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
    • Moved by Rogerio Jerez Tuesday, November 10, 2009 12:18 PM Movido para o Fórum Apropriado (De:Conteúdo técnico dentro do MSDN)
    • Moved by Harley AraujoOwner Thursday, November 19, 2009 1:58 PM (De:Onde está o fórum para...?)
    Wednesday, July 29, 2009 8:51 PM

Answers

  • 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
    • Proposed as answer by Rafael F P Tuesday, August 11, 2009 5:37 PM
    • Marked as answer by Harley AraujoOwner Thursday, November 19, 2009 1:58 PM
    Monday, August 10, 2009 7:26 PM

All replies

  • 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
    • Proposed as answer by Rafael F P Tuesday, August 11, 2009 5:37 PM
    • Marked as answer by Harley AraujoOwner Thursday, November 19, 2009 1:58 PM
    Monday, August 10, 2009 7:26 PM
  • 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
    Monday, August 17, 2009 2:24 PM