A formatação de números é uma tarefa essencial para garantir que os dados sejam apresentados de forma clara e precisa. Em C#, a linguagem oferece diversas maneiras de formatar números, permitindo uma apresentação personalizada para atender a diferentes necessidades. Entre as opções disponíveis estão o uso de especificadores de formato padrão e personalizados. Neste artigo exploraremos essas abordagens com exemplos práticos.
Especificadores de formato padrão
Assim como falado no artigo sobre formatação de data e hora, o método “ToString” recebe especificadores que vão formatar a data e hora com base em um padrão, na formatação de números também utilizamos especificadores que vão definir como os números devem ser apresentados. Alguns dos especificadores mais comuns são “C” (moeda), “D” (decimal), “E” (científico), “F” (fixo), “N” (numérico) e “P” (percentual). Cada um deles permite formatar números de acordo com convenções específicas, como moeda localizada, notação científica, número fixo de casas decimais, entre outros, facilitando a apresentação precisa e legível dos dados numéricos em aplicações diversas.
Especificador de formato “C” (moeda)
O especificador de formato “C” é utilizado para formatar um número como valor monetário, de acordo com as configurações culturais do sistema. Isso inclui o símbolo da moeda, os separadores de milhar e os separadores decimais.
decimal valor = 1234.56m;
string valorFormatado = valor.ToString("C");
Console.WriteLine(valorFormatado); // Saída: R$ 1.234,56
Neste exemplo, o valor “1234.56” é formatado como moeda, exibindo o símbolo da moeda e os separadores de milhar e decimal adequados ao formato brasileiro que é a cultura do sistema em que a aplicação foi executada.
Especificador de formato “D” (decimal)
O especificador de formato “D” é usado para formatar números inteiros com um número fixo de dígitos. Ele é especialmente útil quando você precisa garantir que os números tenham uma quantidade específica de dígitos, preenchendo com zeros à esquerda, se necessário. Por exemplo, em sistemas de inventário ou produção, números de lote podem ser formatados de maneira semelhante para garantir consistência.
int numeroLote = 7;
string codigoLote = numeroLote.ToString("D5");
Console.WriteLine($"Número do Lote: {codigoLote}"); // Saída: Número do Lote: 00007
O “D” indica que o número deve ser formatado como um inteiro decimal, e o “5” especifica que a representação do número deve ter exatamente cinco dígitos. Se o número original tiver menos de cinco dígitos, zeros serão adicionados à esquerda para preencher a quantidade necessária de dígitos.
Especificador de formato "E" (notação científica)
O especificador “E” formata um número em notação científica.
double numeroGrande = 12345.6789;
string numeroFormatado = numeroGrande.ToString("E2");
Console.WriteLine(numeroFormatado); // Saída: 1.23E+004
Ao usar o especificador “E” com duas casas decimais (“E2”), o valor é exibido como “1,23E+004”. Este formato é vantajoso para representar números muito grandes ou muito pequenos de maneira mais concisa e legível.
Especificador de formato "F" (fixo)
O especificador “F” formata um número com um número fixo de casas decimais.
double numero = 123.456;
string numeroFormatado = numero.ToString("F2");
Console.WriteLine(numeroFormatado); // Saída: 123.46
Aqui, o valor “123.456” é formatado com duas casas decimais fixas. Usando o especificador “F2”, o número é arredondado para “123.46”. Esse formato é ideal quando se deseja uma precisão decimal específica.
Especificador de formato "N" (numérico)
O especificador N formata um número com separadores de milhar
int numero = 123456789;
string numeroFormatado = numero.ToString("N0");
Console.WriteLine(numeroFormatado); //Saída: 123.456.789
Utilizando o especificador “N0”, o valor é exibido como “123.456.789”. O “0” indica que não é necessário adicionar nenhuma casa decimal. Esse formato é útil para melhorar a legibilidade de números grandes.
Além disso, você pode adicionar outro número após o “N” para especificar a quantidade de casas decimais. Por exemplo, “numero.ToString(“N3”)” exibirá o valor com três casas decimais, resultando em “123.456.789,000”.
Especificador de formato "P" (percentual)
O especificador “P” converte o número em uma porcentagem, multiplicando-o por 100 e adicionando o símbolo de porcentagem.
double taxa = 0.1234;
string taxaFormatada = taxa.ToString("P");
Console.WriteLine(taxaFormatada); // Saída: 12,34%
Usando o especificador “P”, o valor é multiplicado por 100 e exibido como “12,34%”. Esse formato é adequado para representar frações como porcentagens
Especificadores de formato personalizado
Os especificadores de formato personalizado permitem um controle mais detalhado sobre a apresentação dos números. É possível especificar o número de casas decimais a serem exibidas utilizando 0 e # como placeholders.
O placeholder “0” força a exibição de dígitos, mesmo que eles sejam zeros. Já o placeholder “#” exibe dígitos apenas se eles forem significativos.
double numero = 1234.5;
string numeroFormatadoComZeros = numero.ToString("0.00");
string numeroFormatadoComSharp = numero.ToString("0.##");
Console.WriteLine(numeroFormatadoComZeros); // Saída: 1234,50
Console.WriteLine(numeroFormatadoComSharp); // Saída: 1234,5
No caso do “0.00”, o número é exibido com duas casas decimais, mesmo que sejam zeros. No caso do “0.##”, as casas decimais só são exibidas se forem significativas.
Máscaras personalizadas
Usando o método ToString é possível aplicar formatações variadas a valores numéricos, exibindo-os, por exemplo, como números de telefone ou códigos específicos. O código abaixo mostra dois exemplos:
long telefone = 1123456789;
string telefoneFormatado = telefone.ToString("(00) 00000-0000");
Console.WriteLine(telefoneFormatado); // Saída: (11) 2345-6789
int codigoProduto = 123;
string codigoFormatado = codigoProduto.ToString("PROD-0000");
Console.WriteLine(codigoFormatado); // Saída: PROD-0123
Apesar desse tipo de informação ser normalmente armazenada como texto, é importante conhecermos as possibilidades que a linguagem nos oferece.
Acelere a sua carreira conosco!
Se você é Desenvolvedor .NET Júnior e quer acelerar sua carreira até nível Pleno com salário de R$7k+, ou mesmo busca a primeira vaga, conheça a Mentoria .NET Start: Clique aqui
Se é Desenvolvedor .NET Pleno ou Sênior e quer virar referência técnica em sua equipe e mercado, com salário de R$10k+, conheça a Mentoria .NET Expert: Clique aqui
Conclusão
A formatação de números em C# é uma habilidade crucial para qualquer desenvolvedor que busca apresentar dados de forma clara e adequada. Utilizando especificadores de formato padrão e personalizado, é possível adaptar a apresentação de números às necessidades específicas de cada aplicação. Com a prática e a exploração dessas ferramentas, a formatação de números se tornará uma tarefa simples e eficiente.