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

Não seria melhor?

Não seria melhor usar um double ou float pra armazenar o valor mediaMensal? No caso, eu fiz assim.

class BalancoTrimestral{

    public static void main(String[] args){
        int gastosJaneiro = 15000;
        int gastosFevereiro = 23000;
        int gastosMarco = 17000;

        double mediaMensal;

        int gastosTrimestre = gastosJaneiro + gastosFevereiro + gastosMarco;
        mediaMensal = gastosTrimestre / 3;
        System.out.println(gastosTrimestre);
        System.out.println("Valor da Média mensal = "+mediaMensal);

    }

}
4 respostas

Com certeza, no caso de cálculo de médias e coisas do tipo, as variáveis de ponto flutuante são melhores. Nesse caso o uso do double não se faria necessária pelo tamanho, mas ele é melhor que o float pois é o padrão usado pelo Java. Então a resposta é, sim, use o double!

Vale lembrar que, se tratando de dinheiro, nenhum dos dois é o recomendado. Para se obter o máximo de precisão, o indicado é o uso da classe BigDecimal. Essa classe tem métodos específicos para formatar os valores, vale a pena olhar esses links:

https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html

http://blog.caelum.com.br/arredondamento-no-java-do-double-ao-bigdecimal/

solução!

@Eduardo, ambas as respostas estão bastante corretas.

Sim, vale mais a pena utilizar variáveis de ponto flutuante para armazenar uma média, mas claro que isso depende do seu modelo de negócios. Pode ser do seu interesse fazer o arredondamento, e armazenando em um inteiro isso ocorre automaticamente.

No caso de manipulação de valores monetários, é mais interessante utilizar a classe mencionada, o BigDecimal, pois tanto o double quanto o float têm alguns problemas de arredondamento com certos números.

Um exemplo: quanto você diria que é 0.1 * 0.1? O resultado esperado seria 0.01, certo? Porém, ao fazer essa multiplicação, você vê um resultado estranho (comando rodado em python):

>>> 0.1 * 0.1
0.010000000000000002

Parece pouco, mas quando isso se repete em milhares ou milhões de transações, a soma pode ser prejudicial ao seu livro de contas!

E mais, se você tentar comparar o resultado dessa multiplicação com um valor constante, vai ter uma surpresa!

>>> (0.1 * 0.1) == 0.01
False

Portanto, cuidado ao usar double e float, lembrando-se sempre desses problemas.

É isso aí! Lembre-se de marcar a resposta que te ajudou como solução para ajudar os próximos que tiverem uma dúvida semelhante! E bons estudos!

Entendi, muito obrigado a todos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software