Problemas com divisão

1 resposta
R

Olá,

Estou com um problema em um algorítimo.

Quando faço as seguintes divisões:

15/0,15, o resultado esperado deveria ser 100.
17/0,17, o resultado esperado deveria ser 100.

Porém, dependendo do tipo utilizado para definição das variáveis, float ou double, o resultado fica diferente.
Pra o 15/0,15 por exemplo, funciona com um dos tipos e não funciona com o outro, apresentando como resultado 99.999…
Sendo que para o 17/0,17 funciona exatamente com o tipo contrário do 15/0,15, mas não funciona com o outro tipo.

Ou seja, não estou conseguindo fazer com que para os dois caso eu tenha o resultado esperado. Abaixo segue o trecho de código que está gerando o problema.

dados.setLrgm((dados.getLargura()/100d));

        if ((dados.getLrgm()*dados.getQnt()) < dados.getX()) {
             return 0;
        }

        dados.setQntmaxXY(dados.getX()/dados.getLrgm());

dados.setQntmaxXY é que está recebendo o valor com problema.
dados.getX() é int, os outros estão como double. Porém já tentei como float e quando funciona para um dos casos acima, não funciona para o outro.

Obrigado.

1 Resposta

R

Achei o motivo do problema.

Achei ridiculo isso. Tenho dois tipos de variáveis que não posso confiar, por que sempre vai dar problemas de exatidão.

Enfim, vou ter que fazer com BigDecimal.

Criado 4 de novembro de 2011
Ultima resposta 4 de nov. de 2011
Respostas 1
Participantes 1