NetRunner: Java Mastery Guide 1.0 Help

Formatação de Números

NumberFormat

Formatação Básica

// Formatadores básicos NumberFormat nf = NumberFormat.getInstance(); NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(); NumberFormat percentFormat = NumberFormat.getPercentInstance(); // Exemplos double number = 1234.56; String formatted = nf.format(number); // "1,234.56" String currency = currencyFormat.format(number);// "$1,234.56" String percent = percentFormat.format(0.75); // "75%"

Localização

// Formatadores localizados Locale brLocale = new Locale("pt", "BR"); NumberFormat brCurrency = NumberFormat.getCurrencyInstance(brLocale); String brValue = brCurrency.format(1234.56); // "R$ 1.234,56" Locale frLocale = new Locale("fr", "FR"); NumberFormat frCurrency = NumberFormat.getCurrencyInstance(frLocale); String frValue = frCurrency.format(1234.56); // "1 234,56 €"

DecimalFormat

Padrões Customizados

// Padrões de formatação DecimalFormat df = new DecimalFormat("#,###.##"); String num = df.format(1234567.89); // "1,234,567.89" // Zeros à esquerda DecimalFormat df2 = new DecimalFormat("000000.00"); String padded = df2.format(123.4); // "000123.40" // Sufixos e prefixos DecimalFormat df3 = new DecimalFormat("€ #,###.00"); String euro = df3.format(1234.56); // "€ 1,234.56"

Símbolos Customizados

DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US); symbols.setDecimalSeparator(','); symbols.setGroupingSeparator('.'); DecimalFormat custom = new DecimalFormat("#,###.##", symbols); String result = custom.format(1234.56); // "1.234,56"

Parsing

Conversão de Strings

// Parse básico NumberFormat nf = NumberFormat.getInstance(); Number num = nf.parse("1,234.56"); // Parse com locale NumberFormat frFormat = NumberFormat.getInstance(Locale.FRANCE); Number frNum = frFormat.parse("1 234,56"); // Tratamento de erros try { Number value = nf.parse("invalid"); } catch (ParseException e) { System.err.println("Formato inválido"); }

Casos Especiais

Números Científicos

// Notação científica DecimalFormat scientific = new DecimalFormat("0.###E0"); String sci = scientific.format(123456.789); // "1.235E5" // Precisão customizada DecimalFormat precise = new DecimalFormat("0.000000"); String precision = precise.format(Math.PI); // "3.141593"

Arredondamento

DecimalFormat df = new DecimalFormat("#,###.##"); df.setRoundingMode(RoundingMode.HALF_UP); String rounded = df.format(123.456); // "123.46"

Boas Práticas

Constantes de Formato

public class NumberUtils { public static final DecimalFormat MONEY_FORMAT = new DecimalFormat("#,##0.00"); public static final DecimalFormat PERCENT_FORMAT = new DecimalFormat("#.##%"); }

Validação

public boolean isValidNumber(String numStr, NumberFormat format) { try { format.parse(numStr); return true; } catch (ParseException e) { return false; } }

Frameworks e Bibliotecas

Java Money API

// Usando JavaMoney MonetaryAmount amount = Money.of(1234.56, "USD"); MonetaryAmountFormat format = MonetaryFormats.getAmountFormat(Locale.US); String formatted = format.format(amount);

Próximos Passos

26 June 2025