Java: Formatando um Valor Numerico

From Wiki

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

Exemplo

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


Ver também