Formatando float para que fique com apenas 2 casas decimais

3 respostas
S

Boa noite, queria formatar um float para que ele fica com apenas 2 casas decimais. estou usando o DecimalFormat, mas não está dando certo.

NumberFormat formatarFloat= new DecimalFormat("0.00");  


		float numero1=(float) 15.57564564;
		float numero2=(float) 12.25456465;

		              formatarFloat.format(numero1);
		              formatarFloat.format(numero2);

		              System.out.println(numero1);
		              System.out.println(numero2);

3 Respostas

pmlm
String numero1Formatado = formatarFloat.format(numero1);  
String numero2Formatado = formatarFloat.format(numero2);  
  
System.out.println(numero1Formatado);  
System.out.println(numero2Formatado);

Ou simplesmente

System.out.println(formatarFloat.format(numero1));  
System.out.println(formatarFloat.format(numero2));
gaulix

O método format retorna uma String, que é o valor formatado, você não está armazenando esse valor...

NumberFormat formatarFloat = new DecimalFormat("#.##");

        float numero1 = (float) 15.57564564;
        float numero2 = (float) 12.25456465;

        float novoNumero1 = Float.parseFloat(formatarFloat.format(numero1).replace(",", "."));//não sei se tem um jeito de fazer com que o format vir com . ao invez de ,
        float novoNumero2 = Float.parseFloat(formatarFloat.format(numero2).replace(",", "."));//então faço um replace pra substituir a virgula por ponto

        System.out.println(novoNumero1);
        System.out.println(novoNumero2);
matheuslmota

Você deve construir um objeto NumberFormat especificando um Locale, que é um objeto que representa informações de cultura usados para por exemplo, especificar o separador em números decimais. Faça:

NumberFormat numberFormat = NumberFormat.getInstance(new Locale("pt", "BR"));
Observe que no Brasil usamos a virgula como separado, nos EUA usa-se o ponto. Se preferir o ponto, use o Locale americano:
NumberFormat numberFormat = NumberFormat.getInstance(new Locale("en", "US"));
Use o método setMaximumFractionDigits para definir o número máximo de digitos após o separador:
numberFormat.setMaximumFractionDigits(2);
O código final para o seu problema ficou assim:
import java.text.NumberFormat;
import java.util.Locale;



public class MainTests {
	public static void main(String[] args) {
		NumberFormat numberFormat = NumberFormat.getInstance(new Locale("pt", "BR"));
		numberFormat.setMaximumFractionDigits(2);
		
		float numero1=(float) 15.57564564;  
        float numero2=(float) 12.25456465;  
        System.out.println(numberFormat.format(numero1));
        System.out.println(numberFormat.format(numero2));
	}
}
Criado 28 de outubro de 2012
Ultima resposta 28 de out. de 2012
Respostas 3
Participantes 4