Resolvido - Operação dentro do Get

6 respostas
Mislene

Boa tarde tenho este get:

public BigDecimal getCargahoraria() { return this.cargahoraria; }

gostaria de saber se posso realizar uma operação dentro dele, gostaria de dividir todos os valores recebidos por 20:
ex: cargahoraria/20;

Como posso fazer?
Obrigada :smiley:

6 Respostas

diogoprosoft

Sim pode, ficaria assim:

private cargaHoraria

    public BigDecimal getCargaHoraria() {  
            return this.cargaHoraria.divide(20);  
        }
E

Só tomar cuidado com BigDecimal, porque normalmente o método “divide” (com apenas um argumento) dá erros. Suponha que o número usado tivesse sido 3 ou 7 ou 11, em vez de 20. Quando você divide algo por 3, 7 ou 11, o resultado normalmente é uma dízima periódica, o que provoca um erro no método divide.

Para que o método divide não retorne erros, você precisa usar o “divide” com mais parâmetros, e saber quantas casas decimais você quer depois da vírgula.

http://docs.oracle.com/javase/6/docs/api/java/math/BigDecimal.html#divide(java.math.BigDecimal,%20int,%20int)

Mislene

Olá estou fazendo:

public BigDecimal getCargahoraria() {
		return this.cargahoraria.divide(cargahoraria, 20, RoundingMode.HALF_DOWN);
		 
	}

e ele retorna em todos os resultados :1.00000000000000000000
não faz o cálculo.

diogoprosoft

Ah sim vc está dividindo ele por ele mesmo, faz assim:

BigDecimal valor1 = new BigDecimal(200);

System.out.println(valor1.divide(new BigDecimal(20), 2, BigDecimal.ROUND_HALF_DOWN));

Um exemplo para vc ver o funcionamento, o valor1 é seu cargaHoraria e o 20 é a divisão, o 2 são as casas decimais e o arredondamento
Mislene

Valeu Diogo deu certo…

Obrigada :smiley:

Mislene

Valeu Diogo deu certo…

Obrigada :smiley:

Criado 9 de abril de 2013
Ultima resposta 9 de abr. de 2013
Respostas 6
Participantes 3