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.1double v2 = getPago(); == 392.09double 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: @eldiusGithub: https://github.com/EldiusBitBucket: http://bitbucket.eldiosantos.net/
Analista-Programador






0 comentários:
Postar um comentário