[Resolvido]Formatação de Variável BigDecimal

Bom dia pessoal, encontrei varios tópicos no fórum de pessoas que precisavam pegar somente duas casas após a vírgula, só que o meu problema é um pouquinho diferente e sobre isto eu não achei nada.
Como faço para pegar uma variavel BigDecimal, que esta recebendo um valor 5000, e transformá-la para 50.00, ou de 4545 para 45.45. e assim por diante?

  1. Divida o valor por 100
  2. Use DecimalFormat mesmo. O método format aceita um BigDecimal.

Use a classe DecimalFormat, presente no pacote java.text

Nela, forneça o formato “0.00”, que vai ter as duas casas decimais.

BigDecimal total = new BigDecimal("5000"); BigDecimal cem = new BigDecimal("100"); total = total.divide(cem); DecimalFormat resultado = new DecimalFormat("0.00"); resultado.format(total); jLabel1.setText(String.valueOf(total));
o resultado da 50, eu realmente precisava que fosse 50.00, mas com o 4545 ja funciona!!!

#  DecimalFormat resultado = new DecimalFormat("0.00");  
# resultado.format(total);  
# jLabel1.setText(String.valueOf(total));  

Amigo, você está viajando. O correto é:

DecimalFormat resultado = new DecimalFormat("0.00");  
jLabel1.setText(resultado.format(total));  
  1. format não modifica o BigDecimal que está sendo operado. Ele retorna uma String do jeitinho que você quer.
  2. Onde é que você arranjou o String.valueOf? No Autocomplete?

É tinha viajado mesmo, a gora deu certo, muito obrigado!!!

Bom dia Pessoal, dentro deste mesmo formulario, surgiu um novo problema, e mais uma vez achei tópicos parecidos, mas não exatemente como o meu problema.
To precisando parcelar os valores e gostaria de arredondá-los,por exemplo se eu tiver uma conta de 55.55 e parcelar em 3 vezes que ele me gerasse uma parcela de 18.51 e duas de 18.52, acho que não estou muito longe de conseguir, mas falta algum detalhe que não estou resolvendo

private void atulizaParcela() { double ValorTotal = Double.valueOf(jftfValorTotal.getText().replace(".", "").replace(",", ".")); BigDecimal ValorTotal2 = new BigDecimal(ValorTotal); ValorTotal2 = ValorTotal2.setScale(2, BigDecimal.ROUND_HALF_EVEN); int QTDE = Integer.valueOf(jtParcelas.getText()); BigDecimal QTDE2 = new BigDecimal(QTDE); BigDecimal[] var1 = ValorTotal2.divideAndRemainder(QTDE2, MathContext.UNLIMITED); BigDecimal valorPrimeiraParcela = var1[0].add(var1[1]); BigDecimal valorDemaisParcelas = var1[0]; valorDemaisParcelas = valorDemaisParcelas.setScale(2, BigDecimal.ROUND_HALF_EVEN); jftfValorParcelas.setText(String.valueOf(valorDemaisParcelas)); }
Deste Jeito se eu informar o valor 55.55 ele está retornando uma parcela de 19.55 e duas de 18.00, tem como aproximar mais estes valores?

import java.math.BigDecimal;
import java.math.RoundingMode;

class Par<T, U> {
	public T primeiro;
	public U segundo;
	public Par(T t, U u) { primeiro = t; segundo = u; }
	public String toString() { return "(" + primeiro + "," + segundo + ")"; }
}

class Parcelas {
	/** Parcelar, sendo que a última parcela é menor */
	public static Par<BigDecimal, BigDecimal> parcelarUltimaParcelaMenor (BigDecimal valor, long nParcelas) {
		BigDecimal parcela;
		BigDecimal ultimaParcela;
		parcela = valor.divide (BigDecimal.valueOf (nParcelas), 2, RoundingMode.CEILING);
		ultimaParcela = valor.subtract (parcela.multiply (BigDecimal.valueOf (nParcelas - 1)));
		return new Par<BigDecimal, BigDecimal>(parcela, ultimaParcela);
	}
	/** Parcelar, sendo que a última parcela é maior */
	public static Par<BigDecimal, BigDecimal> parcelarUltimaParcelaMaior (BigDecimal valor, long nParcelas) {
		BigDecimal parcela;
		BigDecimal ultimaParcela;
		parcela = valor.divide (BigDecimal.valueOf (nParcelas), 2, RoundingMode.FLOOR);
		ultimaParcela = valor.subtract (parcela.multiply (BigDecimal.valueOf (nParcelas - 1)));
		return new Par<BigDecimal, BigDecimal>(parcela, ultimaParcela);
	}
    public static void main (String[] args) {
		System.out.println (parcelarUltimaParcelaMenor (new BigDecimal ("100.00"), 3));
		System.out.println (parcelarUltimaParcelaMaior (new BigDecimal ("100.00"), 3));
	}
}

Saída:

(33.34,33.32)
(33.33,33.34)