Erro em calculo[RESOLVIDO]

4 respostas
denisspitfire

Pessoal estou tentando fazer essa formula para % de gordura corporal
495/(1.0324-.19077(log(cintura-pescoço))+.15456(log(altura)))-450

double log1 = Math.log10(cintura - pescoco);
double log2 = Math.log10(altura);

double porcentagem = 0.19077 * (log1);
porcentagem = porcentagem + 0.15456 * (log2);
porcentagem = 1.0324 - porcentagem;
porcentagem = 495 / porcentagem;
porcentagem = porcentagem - 450;

esta dando outro resultado…

alguem pode me dar uma luz?

4 Respostas

E

Uai, por que é que não usa diretamente:

495/(1.0324-0.19077*(Math.log10(cintura-pescoço))+0.15456*(Math.log10(altura)))-450

? Que resultado está dando diferente do esperado?

denisspitfire

what??? agora funcionou!

eu tinha até separado em varias operações para nao dar errado… O.o

bom, problema resolvido. vlw cara

E

Se você souber o que está fazendo até vale fazer isso, senão é melhor deixar o mais parecido possível com a fórmula original.

Quebrar em várias operações normalmente não é necessário se você não precisa de algum resultado intermediário.
Um caso em que vale a pena quebrar em várias operações é quando você tem um cálculo repetido . Por exemplo, digamos que a fórmula fosse

495/(1.0324-0.19077*(Math.log10(cintura-pescoço))+0.15456*(Math.log10(cintura-pescoço)))-450

e esse cálculo tivesse de ser otimizado porque ele tem de ser repetido 1 milhão de vezes. Então você sabe que a operação de cálculo de log é mais lenta, e que ela aparece 2 vezes na fórmula. Você faria então:

double log = Math.log10(cintura-pescoço);
.... = 495/(1.0324-0.19077*log+0.15456*log)-450 ....

Certo?

denisspitfire

entendi

Criado 22 de novembro de 2012
Ultima resposta 22 de nov. de 2012
Respostas 4
Participantes 2