Problemas para arredonar número

3 respostas
A

E ai turminha…

Eu estou com o seguinte problema…

Tenho um vetor de INT com os seguintes valores: 9, 7, 6, 4
Isso totaliza 26.

Gostaria de saber o percentual de cada resposta, dai eu fiz assim (idéia do algoritmo, em portugol):

for(tamanho do meu vetor)
percentual[x] = (valor[x] * 100) / 26;

Como meu vetor de percentual é INT também, o java está arredondando os valores. Até ai tudo bem. O problema é que a soma dos percentuais nunca dá 100%, e sim, 98%.

Para os valores 9, 7, 6, 4 ele me retornou 34%, 26%, 23%, 15%. (total de 98%)

Como corrigir isso? O Java está arredondando TUDO para baixo? como funciona esse arredondamento?

Valeu!!!

3 Respostas

P

Andre,

O java não esta arredondando os valores nem pra cima nem pra baixo… xiiii agora ficou confuso :oops:

O que esta acontecendo é que voce esta fazendo um cast implicito, isto é, vc esta colocando um valor double em um tipo primitivo int. E como java trabalha com isso ?

Bom , ele simplismente ignora as casas decimais !!

Espero ter ajudado

leonardom

Andre, trabalhe com valores do tipo double e utilize o método round da classe Math para fazer o arredondamento, acho que ai resolve seu problema.

Mais ou menos assim:

double[] v = {9, 7, 6, 4};
        double[] p = new double[v.length];
        
        for (int i = 0; i < v.length; i++) {
            p[i] = Math.round((v[i] * 100)/26);
            System.out.println(p[i] + "%");
        }
A

Valeu psilva pelas dicas e leonardom pela “receita de bolo” hehehe. Deu tudo certo aqui já, obrigado!!!

Criado 4 de junho de 2004
Ultima resposta 4 de jun. de 2004
Respostas 3
Participantes 3