Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Problema com arredondamento em cálculo

Putz, falha minha. Esse falha de arredondamento já é do meu conhecimento.


No .NET uso o tipo "decimal", porém no Java pensei que o "double" seria o mesmo que o "decimal" do .NET. Erro lógico amador....rs.

Vou remodelar usando BigDecimal, é melhor, pra evitar futuros problemas.

Porém já de ante-mão: o ROUND_HALF_EVEN funcionou. Arredondou pra 0,01.

Em 9 de abril de 2012 16:11, Eldio Santos Jr. <eldiosantos@gmail.com> escreveu:
Felipe, já tentou fazer todo o cálculo com o BigDecimal? Acredito que dessa forma não role o arredondamento que rola no ponto flutuante...

Em 9 de abril de 2012 16:09, Alex Baule <alexwbaule@gmail.com> escreveu:
Brincadeiras a parte eu fiz assim...


Criei o Formato...

DecimalFormat df = new DecimalFormat("#.###");

e depois aplico ao valor..
df.format(pendencia);




Em 9 de abril de 2012 16:06, Alex Baule <alexwbaule@gmail.com> escreveu:
ROUND_DOWN ?


Em 9 de abril de 2012 16:04, Felipe Aron <felipearon@gmail.com> escreveu:

Galera, ta acontecendo algo "estranho" comigo. Tenho o seguinte método:

      public double getPendencia() {
double v1 = getAPagar();  == 392.1
double v2 = getPago();     == 392.09
double pendencia = v1 - v2; == 0.010000000000047748 ???

if ((pendencia >= (TOLERANCIA_PENDENCIA * -1))
&& (pendencia <= TOLERANCIA_PENDENCIA))
pendencia = 0;

return pendencia;
}

O valor correto para "pendencia" não deveria ser os exatos 0,01?

Se eu arredondo esse valor usando:

BigDecimal(pendencia).setScale(2, BigDecimal.ROUND_UP).doubleValue() 

Ele me retorna 0,02. Creio que por causa do "BigDecimal.ROUND_UP"

Como resolver esse problema da forma correta?

--
Analista-Programador






--

________________
Eldio Santos Junior
Tel.: (21) 8884-3757
Skype: eldiojr
Twitter: @eldius



--
Analista-Programador

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário