Arredondar para exatamente 2 casas decimais

galera
seguinte
tenho a seguinte formula pra arredondar um double pra 2 casas decimais

double r = 3; int decimalPlace = 2; BigDecimal bd = new BigDecimal(r); bd = bd.setScale(decimalPlace,BigDecimal.ROUND_HALF_UP); r = bd.doubleValue(); System.out.println(r);

ta tudo certo, o problema é que ele arredonda o valor pra 3.0, sendo que eu queria que fose 3.00
é possível imprimir este “3.00”? como?

amigo não sei se isso vc suprir o seu problema, mas vc sabe u pouco de C??
porque da pra fazer isso na hora da impressão deste modo:

System.out.printf(%.2f", r);

Testa dessa maneira e ve se da certo, ok :wink:

vlw

Cara a partir da versão 5, o java passou a ter um recurso bastante interessante, muito comum para aqueles que programam em c, que é o método printf. Se vc pesquisar alguma coisa sobre este método poderá sanar sua duvida

ae galera blz !

sei que esse post esta velho porem já cai nessa duvida e cais neste post consegui resolver e estou postando uma solução
segura para arredondamento para matematica finaceira sem margem de erro !

String Converte;

float vlr = (float) vl1;
BigDecimal big = new BigDecimal(vlr);
big = big.setScale(3, BigDecimal.ROUND_HALF_EVEN);
converte = String.valueOf(big);
int w = converte.length();
w =(w-1);
char r = converte.charAt(w);
String p = ""+r;
int it = Integer.parseInt(p);


/*caso a terceira casa seja menor que 5 corte a 3 casa depois da virgula*/
if(it < 5){ 
frase = new StringBuffer(converte);
converte = ""+frase.deleteCharAt(w);}

/* se a teceira casa for maior que 4 joga para DecimalFormat que ele arredonada automatico para cima sem a terceira casa…

else {
decimal = new DecimalFormat( "0.00" );
vl_conv = Double.parseDouble(converte);
converte = (decimal.format(vl_conv));
converte = converte.replaceAll(",",".");}

DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setMinimumFractionDigits(2);
System.out.println(decimalFormat.format®);