operaçoes com a classe BigDecimal[Resolvido]

E ai galera…

Por favor, me tirem uma dúvida:

Eu nunca trabalhei com operações com a classe BigDecimal, agora preciso usá-la, mas não tá funcionando:

BigDecimal calc = new Bigdecimal(0);

calc.add(new BigDecimal(100));

Esta operação deveria atribuir a calc o valor de 100, correto?
Mas não é isso que acontece. A variavel calc continua com o valor 0 como foi iniciada.

O que pode estar acontecendo? Estou fazendo errado esta operação?

Grato…

Os metodos de operacoes matematicas da classe BigDecimal, nao atribuem diretamente o resultado mas sim retornam esse resultado. Entao o certo seria:

 BigDecimal calc = new Bigdecimal(0);
 calc = calc.add(new BigDecimal(100));

O construtor sem argumentos da classe BigDecimal não é visísel.

Você deve instanciar passando um valor. ex.:

BigDecimanl calc = new BigDecimal(200);

BigDecimal, assim como String e os “wrappers” (java.lang.Integer etc.), é uma classe “imutável”, ou seja, você não pode modificar o valor de um objeto BigDecimal; apenas o valor de uma variável, atribuindo um novo objeto.

Exemplos:

String s = "joão";
s.toUppercase();
System.out.println (s); // imprime "joão", não "JOÃO"
s = s.toUppercase();
System.out.println (s); // imprime "JOÃO"

BigDecimal bd = new BigDecimal ("1.23");
bd.add (new BigDecimal ("4.56"));
System.out.println (bd); // imprime "1.23", não "5.79"
bd = bd.add (new BigDecimal ("4.56"));
System.out.println (bd); // imprime "5.79"

Ok galera.

Java é assim mesmo, sempre tem coisa nova pra se aprender.
Era bem simples a solução. Agora ta funcionando legal.

Valeu.

Como fazer isto com variaveis?

public BigDecimal total(BigDecimal qtd, BigDecimal vUnit){

	BigDecimal total = new BigDecimal(0);
	try{
		System.out.println("qtd : " + qtd);
		System.out.println("v unit : " + vUnit);
		
		total.add(qtd);
		System.out.println("p1 total: " + total);
		total.multiply(vUnit);
		System.out.println("p2 total: " + total);
		return total;
		
	} catch (Exception e){
		System.out.println("errou: " + e);
		return null;
	}
}