Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida na divisão de inteiros

Gostaria de saber, exatamente, o comportamento dessa atribuição para a variável float mediaMensal.

Quando faço a atribuição do valor da mediaMensal o valor atribuído retorna 18333.0

Enquanto deveria atribuir a mediaMensal 18333.3.

Poderia me explicar o porque dessa aproximação?

Segue o código do exercício:

class BalancoTrimestral{
    public static void main(String[] args){

        int gastosJaneiro = 15000;
        int gastosFevereiro = 23000;
        int gastosMarco = 17000;
        int gastosTrimestre = gastosJaneiro + gastosFevereiro + gastosMarco;
        System.out.println("Gasto do trimestre: R$" + gastosTrimestre);
        float mediaMensal = ( gastosJaneiro + gastosFevereiro + gastosMarco ) / 3;
        System.out.println("Valor da media mensal : R$" + mediaMensal);

    }
}
1 resposta
solução!

Boa Tarde Thiago.

Acredito que isso aconteça devido aos tipos que vocês está utilizando nas variáveis.

Quando você divide as variáveis gastoJaneiro + gastoFevereiro + gastoMarço por 3, você está dividindo a soma de 3 numeros inteiros por um número inteiro, o resultado será um numero inteiro.

Mesmo que você pegue esse resultado e armazene em uma variável float, ele ainda sim manterá o seu valor de inteiro, pois no momento da divisão ele descartou os decimais.

Para resolver isso, sugiro utilizar em vez desta soma, a variável gastosTrimestre e transformar ela em float.

Segue o meu código...

class Teste{
    public static void main(String[] args){

        int gastosJaneiro = 15000;
        int gastosFevereiro = 23000;
        int gastosMarco = 17000;
        float gastosTrimestre = gastosJaneiro + gastosFevereiro + gastosMarco;
        System.out.println("Gasto do trimestre: R$" + gastosTrimestre);
        float mediaMensal = gastosTrimestre / 3;
        System.out.println("Valor da media mensal : R$" + mediaMensal);
        System.out.printf("Valor da media mensal : R$ %.1f", mediaMensal);
    }
}