Cum se calculează logaritmele în Java?

Urmează formula

Procentul de grăsime = 495/(1,0324 - 0,19077 x (LOG10 (talie - gât)) + 0,15456 x (LOG10 (înălțime)) - 450

Urmează codul meu

import java.math.*;

public class Position
{
    static double waist=66,neck=30,height=150;

    public static void main(String[]args)
    {
        double fat = 495/( (1.0324 - 0.19077)* (Math.log(waist - neck)/Math.log(10)) + (0.15456) *  (Math.log(height)/Math.log(10))) - 450;

        System.out.println(fat);
    }
}

Răspunsul pe care îl primesc este incorect. Ar trebui să fie de 11,8% (Utilizați următoarea http://lowcarbdiets.about.com/library/blbodyfatcalculator. htm )

Cred că am făcut ceva incorect în logaritmi. Te rog ajută-mă să obțin răspunsul corect.

3
Chiar și acest lucru pare a fi greșit: (1.0324 - 0.19077 x (LOG10 (talie - gât))! = (1.0324 - 0.19077) * (Math.log (talie - gât) /Math.log de la formula originală.
adăugat autor PeterMmm, sursa
Chiar și acest lucru pare a fi greșit: (1.0324 - 0.19077 x (LOG10 (talie - gât))! = (1.0324 - 0.19077) * (Math.log (talie - gât) /Math.log de la formula originală.
adăugat autor PeterMmm, sursa
Verifică Javadocs. Trebuie să utilizați Math.log10() . Math.log() returnează logaritmul bazat pe e
adăugat autor a_horse_with_no_name, sursa
@eis: dar formula originală utilizează log10 (deși nu știu dacă este corect).
adăugat autor a_horse_with_no_name, sursa
@eis: dar formula originală utilizează log10 (deși nu știu dacă este corect).
adăugat autor a_horse_with_no_name, sursa
Puteți folosi fie Math.log10 (x), după cum spune @a_horse_with_no_name, sau Math.log (x) /Math.log care este echivalentă. Nu văd nici o valoare în acesta din urmă, așa cum este disponibilă, și este mai aproape de ceea ce specifică dumneavoastră.
adăugat autor EJP, sursa
Puteți folosi fie Math.log10 (x), după cum spune @a_horse_with_no_name, sau Math.log (x) /Math.log care este echivalentă. Nu văd nici o valoare în acesta din urmă, așa cum este disponibilă, și este mai aproape de ceea ce specifică dumneavoastră.
adăugat autor EJP, sursa
@a_horse_with_no_name nu ar avea însă un impact asupra rezultatului
adăugat autor eis, sursa
@a_horse_with_no_name nu ar avea însă un impact asupra rezultatului
adăugat autor eis, sursa

6 răspunsuri

Ați scris în mod incorect codul. Încercați cu:

import java.math.*;

public class Position
{
    static double waist=66,neck=30,height=150;

    public static void main(String[]args)
    {
        double fat = 495/( 1.0324
            - (0.19077 * (Math.log(waist - neck)/Math.log(10)))
            + (0.15456) * (Math.log(height)/Math.log(10))
            ) - 450;

        System.out.println(fat);
    }
}

Diferența este că acest lucru nu are 1.0324 - 0.19077 - nici formula originală nu a avut-o, deci ați avut o paranteză greșită.

După cum se observă în @a_horse_with_no_name, Math.log() va utiliza logaritmul bazat pe e-mail, și nu 10 bazat, dar în scopul acestui cod rezultatul este același. Pentru a utiliza 10 bazate pe, ai folosi Math.log10 ().

6
adăugat

Ați scris în mod incorect codul. Încercați cu:

import java.math.*;

public class Position
{
    static double waist=66,neck=30,height=150;

    public static void main(String[]args)
    {
        double fat = 495/( 1.0324
            - (0.19077 * (Math.log(waist - neck)/Math.log(10)))
            + (0.15456) * (Math.log(height)/Math.log(10))
            ) - 450;

        System.out.println(fat);
    }
}

Diferența este că acest lucru nu are 1.0324 - 0.19077 - nici formula originală nu a avut-o, deci ați avut o paranteză greșită.

După cum se observă în @a_horse_with_no_name, Math.log() va utiliza logaritmul bazat pe e-mail, și nu 10 bazat, dar în scopul acestui cod rezultatul este același. Pentru a utiliza 10 bazate pe, ai folosi Math.log10 ().

6
adăugat

Calculul jurnalului este corect, dar ați greșit unele paranteze.

double fat = 495/( 1.0324 - 0.19077* (Math.log(waist - neck)/Math.log(10)) + (0.15456) *  (Math.log(height)/Math.log(10))) - 450
2
adăugat

Calculul jurnalului este corect, dar ați greșit unele paranteze.

double fat = 495/( 1.0324 - 0.19077* (Math.log(waist - neck)/Math.log(10)) + (0.15456) *  (Math.log(height)/Math.log(10))) - 450
2
adăugat
495/(1.0324 - 0.19077 x

și asta

495/( (1.0324 - 0.19077)*

nu se potrivește

1
adăugat
495/(1.0324 - 0.19077 x

și asta

495/( (1.0324 - 0.19077)*

nu se potrivește

1
adăugat