none
Casas decimais RRS feed

Respostas

  • Olá Rafaela,

    Se o objetivo for manter duas casas decimais arredondando o valor, então utilize o Math.Truncate como sugerido acima.

    Já se o objetivo for realmente ficar exatamente com duas casas decimais, desprezando o restante, terá de utilizar uma expressão matemática como a abaixo:

    public static decimal ObtemValorCampoDecimalTruncado(decimal valor, int precisao)
    {
        // Calcula o fator multiplicador
        decimal fator = (decimal)Math.Pow(10d, precisao);
       
        // Obtem o valor que queremos junto com a parte inteira,
        // e desprezamos os valores decimais restantes
        decimal valorTruncado = Math.Floor(valor * fator);

        // Agora divide pelo fator multiplicado para obter de volta
        // as casas decimais que foram parar na parte inteira (na multiplicação acima)
        return Math.Floor((Math.Round(valorTruncado, precisao))) / fator;
    }

    Abraços,
    Caio Proiete




    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://www.caioproiete.com

     

    sábado, 29 de maio de 2010 23:06
    Moderador
  • Mostrando mais um dos N geitos

    string valor = String.Format("{0:0.00}", 12.7569699999);

     


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    domingo, 30 de maio de 2010 20:41
    Moderador

Todas as Respostas

  • Podes arredondar, veja:

     

          decimal valor = Convert.ToDecimal("12,7569699999");
          decimal varValor = Math.Round(valor, 2);


    msn: poseidonfba@hotmail.com
    sexta-feira, 28 de maio de 2010 20:05
  • Uma outra forma, já transformando o valor em string, caso vc queria apenas exibir o valor... seria:

     

      decimal valor = Convert.ToDecimal("12,7569699999");
      string strValor = valor.ToString("N");

     

    sexta-feira, 28 de maio de 2010 20:49
  • se nao quiser arredondamentos (que o math vai fazer) pode usar da seguinte forma:

     

    decimal valor = 12.7569699999m;

               

                string v = valor.ToString().Substring(0, 5);

               

                valor = Convert.ToDecimal(v);

    sexta-feira, 28 de maio de 2010 21:24
  • Uma outra forma:

    decimal d = 12.7569699999;
    d = Math.Truncate(d * 100) / 100;


    Algumas dicas sobre o assunto:
    http://rafaelrgi.wordpress.com/2007/12/15/matematica-basica-na-programacao/

    ® http://rafaelrgi.wordpress.com/
    sábado, 29 de maio de 2010 11:54
  • Olá Rafaela,

    Se o objetivo for manter duas casas decimais arredondando o valor, então utilize o Math.Truncate como sugerido acima.

    Já se o objetivo for realmente ficar exatamente com duas casas decimais, desprezando o restante, terá de utilizar uma expressão matemática como a abaixo:

    public static decimal ObtemValorCampoDecimalTruncado(decimal valor, int precisao)
    {
        // Calcula o fator multiplicador
        decimal fator = (decimal)Math.Pow(10d, precisao);
       
        // Obtem o valor que queremos junto com a parte inteira,
        // e desprezamos os valores decimais restantes
        decimal valorTruncado = Math.Floor(valor * fator);

        // Agora divide pelo fator multiplicado para obter de volta
        // as casas decimais que foram parar na parte inteira (na multiplicação acima)
        return Math.Floor((Math.Round(valorTruncado, precisao))) / fator;
    }

    Abraços,
    Caio Proiete




    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://www.caioproiete.com

     

    sábado, 29 de maio de 2010 23:06
    Moderador
  • Mostrando mais um dos N geitos

    string valor = String.Format("{0:0.00}", 12.7569699999);

     


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    domingo, 30 de maio de 2010 20:41
    Moderador
  • Deu certo... muito obrigada =D
    terça-feira, 1 de junho de 2010 11:48