none
Tipo decimal aceita número fracionário? RRS feed

  • Pergunta

  • Tenho um campo que o usuário quer se seja possível num campo da tela número com vírgula ou ponto, mas o objeto que pega o valor desse campo é do tipo decimal, e esse mesmo objeto é usado em todo sistema, se eu mudar para tipo double pode dar problema no resto do sistema só por causa desse ponto. Estou tentado usar Decimal.TryParse(campo, out valor); mas está tirando o ponto nessa conversão, se a string tem 2.2 essa conversão muda o valor para 22, eu já tentei de várias formas mas não consigo colocar esse ponto , mas nos sites da microsoft diz que é possível mas não está funcionando. Estou fazendo errado? Não existe formas de colocar esse ponto em decimal? Se não terei que mudar todo o projeto por causa de uma vírgula.
    quinta-feira, 23 de janeiro de 2014 22:29

Respostas

  • Caro Shatemui,

    Teste digitando 2,2 eu acho que ai vai passar ... o seu idioma ta pt-Br é por causa do Globalization !!!

    Digita 2,2 e manda para variavel que nela tem que ficar 2.2!!!

    Exemplo:

    string s = "2,2";
    decimal sa = decimal.Parse(s); //aqui ta certo o decimal vai ficar 2.2
    decimal s1 = decimal.Parse(s.Replace(",", ".")); //aqui ta errado vai ficar 22
    

    é isso que ta acontecendo e você não precisa mudar para double!


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Shatemui sexta-feira, 24 de janeiro de 2014 14:09
    sexta-feira, 24 de janeiro de 2014 03:55

Todas as Respostas

  • Olá Shatemui,

    sua pergunta está muito confusa!

    decimal aceita número fracionado sim, porque você está fazendo essa conversão?

    Wennder

    quinta-feira, 23 de janeiro de 2014 23:05
  • Caro Shatemui,

    Teste digitando 2,2 eu acho que ai vai passar ... o seu idioma ta pt-Br é por causa do Globalization !!!

    Digita 2,2 e manda para variavel que nela tem que ficar 2.2!!!

    Exemplo:

    string s = "2,2";
    decimal sa = decimal.Parse(s); //aqui ta certo o decimal vai ficar 2.2
    decimal s1 = decimal.Parse(s.Replace(",", ".")); //aqui ta errado vai ficar 22
    

    é isso que ta acontecendo e você não precisa mudar para double!


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Shatemui sexta-feira, 24 de janeiro de 2014 14:09
    sexta-feira, 24 de janeiro de 2014 03:55
  • Muito obrigado, funcionou dessa forma.
    sexta-feira, 24 de janeiro de 2014 14:09