Como formatar números e datas corretamente em Java?

Java oferece classes como NumberFormat, DecimalFormat e DateTimeFormatter para formatar números e datas corretamente, de acordo com diferentes localidades.

Como formatar números e datas corretamente em Java?

A formatação correta de números e datas é essencial para a exibição de valores em diferentes contextos, como aplicações financeiras, relatórios e interfaces de usuário. O Java oferece diversas classes para esse propósito.

1. Formatação de números com NumberFormat

A classe NumberFormat permite formatar números de acordo com a localidade definida.

import java.text.NumberFormat;
import java.util.Locale;

public class FormatacaoNumeros {
    public static void main(String[] args) {
        double valor = 12345.678;
        NumberFormat formatoBR = NumberFormat.getInstance(new Locale("pt", "BR"));
        System.out.println("Número formatado (Brasil): " + formatoBR.format(valor));
    }
}

Saída (Brasil):

Número formatado (Brasil): 12.345,678

2. Formatação de moeda com NumberFormat

Para exibir valores monetários:

NumberFormat formatoMoeda = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
System.out.println("Valor formatado: " + formatoMoeda.format(valor));

Saída:

Valor formatado: R$ 12.345,68

3. Formatação de números decimais com DecimalFormat

A classe DecimalFormat permite personalizar a formatação numérica:

import java.text.DecimalFormat;

DecimalFormat df = new DecimalFormat("#,###.00");
System.out.println("Número formatado: " + df.format(valor));

Saída:

Número formatado: 12,345.68

4. Formatação de datas com DateTimeFormatter

A classe DateTimeFormatter é utilizada para formatar datas em Java a partir do pacote java.time.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class FormatacaoData {
    public static void main(String[] args) {
        LocalDate hoje = LocalDate.now();
        DateTimeFormatter formatoBR = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        System.out.println("Data formatada: " + hoje.format(formatoBR));
    }
}

Saída:

Data formatada: 08/03/2025

5. Convertendo Strings para Datas

Para converter uma string no formato de data para um objeto LocalDate:

String dataTexto = "10/05/2025";
LocalDate data = LocalDate.parse(dataTexto, DateTimeFormatter.ofPattern("dd/MM/yyyy"));
System.out.println("Data convertida: " + data);

Conclusão

A formatação correta de números e datas em Java é essencial para aplicações que precisam apresentar informações de forma padronizada e legível. Utilizar NumberFormat, DecimalFormat e DateTimeFormatter garante que os valores sejam exibidos corretamente de acordo com a localidade do usuário.

A exibição correta de números e datas pode parecer um detalhe simples, mas tem grande impacto na usabilidade de sistemas. Diferentes países utilizam padrões distintos para separadores de milhar, casas decimais e formatos de data. Por exemplo, enquanto nos EUA um valor é representado como "1,234.56", no Brasil o mesmo número seria "1.234,56". Ao desenvolver aplicações internacionais, considerar a localização do usuário e utilizar APIs apropriadas é essencial para evitar confusões e garantir que os dados sejam interpretados corretamente.

Algumas aplicações:

  • Exibição de valores financeiros em sistemas bancários
  • Formatação de datas em relatórios empresariais
  • Conversão de valores numéricos para diferentes moedas
  • Exibição correta de números decimais em cálculos científicos

Dicas para quem está começando

  • Use NumberFormat para exibir números conforme a localidade do usuário
  • Para formatação personalizada, utilize DecimalFormat
  • Evite concatenar strings para formatar datas, use DateTimeFormatter
  • Ao manipular datas, prefira LocalDate e LocalDateTime ao invés de Date
  • Teste diferentes locais para garantir que a formatação seja aplicada corretamente

Contribuições de Rodrigo Farias

Compartilhe este tutorial: Como formatar números e datas corretamente em Java

Compartilhe este tutorial

Continue aprendendo:

Como lidar com números decimais em Java sem perder precisão

O Java oferece diferentes tipos para lidar com números decimais, sendo BigDecimal a melhor opção para cálculos precisos.

Tutorial anterior

O que é POO Programação Orientada a Objetos em Java

A Programação Orientada a Objetos (POO) em Java é um paradigma baseado em classes e objetos, promovendo modularidade e reutilização de código.

Próximo tutorial