none
String.Format {0:c} não está funcionando corretamente. RRS feed

  • Pergunta

  • Olá!

    Estou montando um relatório e preciso exibir este cálculo no mesmo.

    txtValorTotal.Text = String.Format("{0:c}", (Convert.ToDecimal(txtValorDeSaques.Text) + Convert.ToDecimal(txtValorDeCompras.Text)).ToString())

    Porém, um determinado valor retornou: 25,875

    Como é cálculo monetário, está incorreto, pois "não existe" 875 centavos.

    Como resolver?

    Obrigado!

    quarta-feira, 6 de fevereiro de 2013 19:15

Todas as Respostas

  • Marcelo,

    Existe a possibilidade de você usar a cultura do Brasil na hora de efetuar esta conversão para "Currency", usando de um dos overloads do método string.Format():

    String.Format(new System.Globalization.CultureInfo("pt-BR"), "{0:c}", (Convert.ToDecimal(txtValorDeSaques.Text) + Convert.ToDecimal(txtValorDeCompras.Text)).ToString())

    MSDN:
    http://msdn.microsoft.com/pt-br/library/1ksz8yb7.aspx

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quarta-feira, 6 de fevereiro de 2013 19:46
  • Vitor obrigado pela resposta, mas não resolveu, 

    Alguma outra sugestão?

    quinta-feira, 7 de fevereiro de 2013 11:01
  • Outro problema...

    Ao dividir o valor 182 por 6, no relatório exibiu

    30,3333333333333333333333333333333333333333333333333333333333333333333...

    O que também não "existe" em valores monetários.

    Como faço para "cortar" e mostrar apenas duas casas decimais no máximo?

    quinta-feira, 7 de fevereiro de 2013 13:56
  • Consegui resolver, as vezes a resposta é tão óbvia que nem percebemos.


    Solução: colocar 

    ToString ("#.##") No fim.


    quinta-feira, 7 de fevereiro de 2013 15:13