Problemas com arrendondamento de divisão no IReport

2 respostas
M

Olá PessoALL,

Preciso fazer um cálculo de porcentagem no IReport, no qual faço a divisão de dois valores e multiplico por 100. Estou usando o método divide do BigDecimal da seguinte forma:

new BigDecimal($F{valorIcms}.toString()).divide(new BigDecimal($F{valorBaseCalculo}.toString()), 4, RoundingMode.HALF_EVEN).multiply(new BigDecimal(100))

No entanto, o resultado dá sempre um número exato (tipo 29,00). Por exemplo, o resultado da divisão dá 0,28995544444779711955523127766085, esse valor é arrendondado para 0,29, multiplicando por 100 dá 29,00. Gostaria que o resultado da divisão considerasse apenas 0,2899 para que o resultado final do cálculo ficasse em 28,99. É possível? Alguém pode me ajudar, por favor?

Obrigado e Feliz Natal!!

2 Respostas

vinidouradoh

você já viu o resultado da divisão antes de multiplicar por 100? Você quer dividir quais numeros?

posta ai pra gente tentar ajudar

M

Vinicius,

Resolvi o problema multiplicando por 100 antes de dividir, aí ficou assim:

new BigDecimal($F{valorIcms}.toString()).multiply(new BigDecimal(100)).divide(new BigDecimal($F{valorBaseCalculo}.toString()), 4, RoundingMode.HALF_EVEN)

Funcionou.

Obrigado, pela resposta.

Criado 24 de dezembro de 2008
Ultima resposta 24 de dez. de 2008
Respostas 2
Participantes 2