Porque essa multiplicação esta retornando NaN?

2 respostas
R

pessoal, criei alguns metodos e um somatorio mas o resultado ta saindo inesperado.

public double log2(double x){
        double resultado;
        resultado = Math.log10(x) / Math.log10(2.00);
        return resultado;
    }

    public double entropia(){
        double entropia=0;
        double[] temp = probabilidades();
        for(int i=0; i<27;i++){
            entropia = entropia + (temp[i]*log2(1/temp[i]));
            System.out.println(entropia);
        }
        return entropia;
    }
e o resultado fica saindo assim
run:
0.26855508874019846
0.33499365063794573
0.40143221253569294
0.5531990232073
0.865852830157217
0.9787299539527116
1.045168515850459
1.261264920594827
1.477361325339195
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
pq fica esse NaN??

estou usando o netbeans 6.5

2 Respostas

M

Provavelmente porque o método probabilidades() retorna valores com zero (e ao se realizar a conta 1/temp|i| obtém-se um NaN).

Se possível poste o método probabilidades() aqui.

R

marcobiscaro2112:
Provavelmente porque o método probabilidades() retorna valores com zero (e ao se realizar a conta 1/temp|i| obtém-se um NaN).

Se possível poste o método probabilidades() aqui.


vlw amigo mas o metodo probabilidades nao retorna 0 nao…
mas resolvi o problema limitando o metodo log2 a 2 digitos assim

public double log2(double x){
        double resultado;
        int temp=0;
        resultado = Math.log10(x) / Math.log10(2.00);
        temp = (int) (resultado*100);
        resultado = (double)(temp/100.00);
        return resultado/1.00;
}

ai funcionou legal…
acho que o numero de casas após a virgula tava crescendo muito :frowning:

outra duvida, no eclipse ao fazer syso + crtl e espaço, ele preenche com System.out.println(), tem como fazer isso e outros atalhos no netbeans 6.5 tb???

Criado 19 de abril de 2009
Ultima resposta 19 de abr. de 2009
Respostas 2
Participantes 2