Problemas com double

6 respostas
A

[Resolvido]

Ala Galera, desculpem a duvida boba o resultado do codigo abaixo não deveria ser 12.67 em vez de 12.0.

public class teste {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int tot = 1267;
        int divisor = 100;
        double resultado;

        resultado = (tot / divisor);

        System.out.println("Resultado = " + resultado);
    }

}

Resultado = 12.0

6 Respostas

fabiomedeirosf

Faça isto:

resultado = (double) (tot / divisor);
A

Ola fabiomedeirosf.

O resultado continua o mesmo.

fabiomedeirosf

Coloque assim:

resultado = (tot / (double) divisor);

Funcionará:

12.67

A

Valeu fabiomedeirosf, funcionou.

Mais sabe explicar o porque deste comportamento?

fabiomedeirosf

Como o divisor era int, os elementos decimais sao automaticamente ignorados, colocando-se um double, fazemos um cast de int pra double.

ViniGodoy

Em outras palavras:
O que ocorre é que você tinha tanto o dividendo como o divisor como inteiros. Portanto, o java entende que você que um resultado inteiro (mesmo que depois você vá atribuir isso a um double).

Quando o colega fez o cast de um dos valores, a conta passou a ser entre um inteiro e um double. E o resultado será double.

Muito cuidado quando você for fazer contas usando valores fixos também. Se seu interesse é ter resultados em double, acostume-se a escrever o “.0” após o valor:

double x = 1237 / 1000; //Errado, o resultado será 1 double x = 1237 / 1000.0; //Certo, o resultado será 1.237

Criado 2 de janeiro de 2011
Ultima resposta 2 de jan. de 2011
Respostas 6
Participantes 3