Como formatar moeda e casas decimais no C Sharp (C#)

A formatação de moedas é necessária quando estamos trabalhando com valores monetários. Uma forma bem simples de formatar moedas no C# é usando a conversão toString() e passando para ela o parâmetro “C”, ficando toString(“C”). O parâmentro “C” faz referência a Currency e utiliza as configurações regionais do Windows para detectar a moeda corrente configurada pelo usuário.

Exemplo de como formatar uma variável double para moeda.

Supondo que exista uma variável Double e você precise exibir o valor em uma label, o código ficaria;

double preco = 56.2;
label1.Text = preco.toString("C");

Exemplo de como formatar uma variável double com duas casas decimais e vírgula.

Podemos também nos deperar com situações aonde precisamos apenas formatar com duas casas decimais ao invês de moeda. Neste caso usamos o parâmestro “N2”, ficando toString(“N2”). Novamente esta parâmetro usa as configurações regionais do Windows para definir se o número será exibido com vírgula, ou com pontos.

Supondo que exista uma variável Double e você precise exibir o valor em uma label, o código ficaria;

double media = 33.2;
label2.Text = media.toString("N2");

Formatando com 3 casas decimais ou mais

Caso precise exibir 3 casas decimais, utilize o parâmetro “N3” e assim por diante.

Resultados

O resultado será este;

Download de exemplo

Os exemplos acima podem ser testados no projeto que disponibilizei para download. Bons estudos.

WF_FormatarMoeda – CLIQUE PARA FAZER O DOWNLOAD

Bônus – Código para permitir apenas números e vírgula no TextBox

Abaixo um código bem simples sobre como permitir apenas números e vírgula dentro de um TextBox.

IMPORTANTE! O código deve ser colocado dentro do evento KeyPress do TextBox.

   if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != ','))
   {
      e.Handled = true;
      MessageBox.Show("este campo aceita somente numero e virgula");
   }
   if ((e.KeyChar == ',') && ((sender as TextBox).Text.IndexOf('.') > -1))
   {
      e.Handled = true;
      MessageBox.Show("este campo aceita somente uma virgula");
   }
formatar 2 casas decimais em C Sharp C#formatar moeda em C Sharp C#