Java: Formatando um Valor Numerico

Solução pra um problema comum em foruns Java.

package testes; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.Locale; public class FormataValor { public static void main(String[] args) { System.out.println(formataValor(".03")); System.out.println(formataValor("0.03")); System.out.println(formataValor("003")); System.out.println(formataValor("30000.00")); System.out.println(formataValor("3000000")); } 	public static String formataValor(String valor){ BigDecimal bd = new BigDecimal(valor); bd.setScale(8,BigDecimal.ROUND_HALF_UP); String pattern = "###,###,##0.00"; Locale locale=new Locale("pt","BR"); DecimalFormatSymbols symbols=new DecimalFormatSymbols(locale); symbols.setDecimalSeparator(','); symbols.setGroupingSeparator('.'); DecimalFormat f=new DecimalFormat(pattern,symbols); return f.format(bd); } }

O resultado é:

0,03 0,03 3,00 30.000,00 3.000.000,00