Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Resultados diferentes na divisão pelo mesmo número

Não entendi o porque da divisão abaixo retornar dois resultados diferentes.

Quando faço

double mediaMensal = gastosTrimestre / 3;

a mediaMensal vale 18333.0

Quando faço

double mediaMensal = gastosTrimestre / 3.0;

a mediaMensal vale 18333.333333333332

Segue código completo:

class BalancoTrimestral {
    public static void main(String[] args) {
        int gastosJaneiro = 15000;
        int gastosFevereiro = 23000;
        int gastosMarco = 17000;
        int gastosTrimestre = gastosJaneiro + gastosFevereiro + gastosMarco;
        double mediaMensal = gastosTrimestre / 3.0;
        System.out.println("Gasto do trimestre: R$" + gastosTrimestre);
        System.out.println("Valor da média mensal: R$ " + mediaMensal);
    }
}
3 respostas
solução!

Olá André.

No processo do cálculo, o Java primeiro irá realizar a expressão baseando nos valores que tem para somente depois atribuir à sua variável.

Sendo a variável gastosTrimestre um int, no primeiro caso, divisão por "3", o cálculo retorna um valor int também, para somente depois atribuir (fazer o cast) ao double mediaMensal.

No segundo caso, divisão por "3.0", como este já é um double, o resultado da divisão já será convertido (cast) também para um double. Por isso o resultado possui as casas decimais, e então atribuído ao mediaMensal.

Ficou claro? Abraço.

No primeiro caso você fez a divisão de um inteiro por outro inteiro, por conseguinte o resultado foi um número inteiro.

No segundo caso você dividiu um inteiro por um real e o resultado foi um número real (float, por exemplo).

Obrigado Harley e Thamirys!