none
Casas Decimais em váriaveis Float RRS feed

  • Pergunta

  • Estou desenvolvendo uma aplicação que utiliza váriaveis Float. Em várias situações preciso que seja restrito a quantidade de casas decimais a 2(duas). Se houver mais casas decimais ele arredonde para 2 ou se houver menos casas ele complete com 0(zeros).

    Alguém sabe me dizer como eu posso resolver isso?

    Se tem mais casas decimais, arredonda para duas, se não tem adiciona zeros.

     

    No select que eu faço do Banco de dados eu já faço a limitação na query mas não consigo fazer ele trazer com ".00" e quando faço operações com os valores dentro do código que causam valores com mais de 2 casas decimais eu perco meu arredondamento.

     

    terça-feira, 11 de julho de 2006 14:44

Respostas

  • velho, essa função vc passa a string com decimais ou sem e ela arruma pra vc...

    public string FormataNumero(string s)
            {
                int i = s.ToString().IndexOf(",");
                if(i==-1)
                {
                    s = (s + ",00");
                }
                else
                {
                    int j = (s.ToString().Length) -i -1;
                    if(j==1)
                    {
                        s = (s+"0");
                    }
                    else
                    {
                        if(j==2)
                        {
                            s = (s+"");
                        }
                    }
                }
                return s;
            }
    terça-feira, 11 de julho de 2006 15:37
  • esqueci de dizer, se quer arredondar sua variavel, faça assim:

    decimal variavel = Decimal.Round(Convert.ToDecimal(ValorComCasas),2);
    sendo o 2 a qtde de casas q vc quer....

    abraços
    terça-feira, 11 de julho de 2006 15:39

Todas as Respostas

  • velho, essa função vc passa a string com decimais ou sem e ela arruma pra vc...

    public string FormataNumero(string s)
            {
                int i = s.ToString().IndexOf(",");
                if(i==-1)
                {
                    s = (s + ",00");
                }
                else
                {
                    int j = (s.ToString().Length) -i -1;
                    if(j==1)
                    {
                        s = (s+"0");
                    }
                    else
                    {
                        if(j==2)
                        {
                            s = (s+"");
                        }
                    }
                }
                return s;
            }
    terça-feira, 11 de julho de 2006 15:37
  • esqueci de dizer, se quer arredondar sua variavel, faça assim:

    decimal variavel = Decimal.Round(Convert.ToDecimal(ValorComCasas),2);
    sendo o 2 a qtde de casas q vc quer....

    abraços
    terça-feira, 11 de julho de 2006 15:39
  • Valeu cara.

    Fiz uma união das suas duas sugestões, mandando arredondar o valor na hora de fazer o cálculo e formatando com as casas decimais quando for exibir na página.

    Muito obrigado.

    terça-feira, 11 de julho de 2006 17:08
  • Sem problemas!!! Precisando poste ai q tentaremos ajudar !!!!!

    Abraços



    terça-feira, 11 de julho de 2006 17:11
  • Pessoal,

    No caso do Rhodes não seria suficente simplesmente colocarmos dentro do parênteses do método ToString() a representação desejada naum???

    Exemplo: Se ele tiver trabalhado com valores montetários, colocaria apenas:

    NOMEDAVARIAVEL.ToString("c").

    Nesse caso, o "c" vem de Currency e este mostraria o variável formatada de acordo com a configuração regional da máquina...

    Para números com duas casas decimais, colocar: NOMEDAVARIAVEL.ToString("n") = Number. Também vem da configuração da máquina.

     

    Desculpas se estou sendo "ignorante", mas acredito q daria certo. Alguém tem como me responder isso?

    [ ]´s

    terça-feira, 11 de julho de 2006 19:10
  • Opa...

    Então, essa ai foi a primeira coisa que eu tentei, mas como a minha aplicação é desenvolvida para regionalização do Brasil, desenvolvida em um Windows setado para Regional Brasil mas hospedado em um servidor com Regionalização Americana, eu tinha que setar a regionalização do sistema. E não sei por que cargas d'água se eu utilizasse o método que você sugeriu ele mostrava na página um número complexo ao invés do número que eu queria.

     

     

    terça-feira, 11 de julho de 2006 22:34