Як обчислити логарифми в Java?

Далі йде формула

Відсоток від жиру = 495/(1.0324 - 0.19077 x (LOG10 (талія - ​​шия)) + 0.15456 x (LOG10 (висота))) - 450

Нижче мій код

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);
    }
}

Відповідь, яку я отримую, є неправильною. Він повинен становити 11,8% (використовуйте наступну http://lowcarbdiets.about.com/library/blbodyfalccalculator. htm )

Я вважаю, що я зробив щось неправильно в логарифмах. Будь ласка, допоможіть мені отримати правильну відповідь.

3
Навіть це здається помилковим: (1.0324 - 0.19077 x (LOG10 (талія - ​​шия))! пріоритет від вихідної формули.
додано Автор PeterMmm, джерело
Навіть це здається помилковим: (1.0324 - 0.19077 x (LOG10 (талія - ​​шия))! пріоритет від вихідної формули.
додано Автор PeterMmm, джерело
Перевірте Javadocs. Вам потрібно скористатися Math.log10() . Math.log() повертає логарифм на основі e
додано Автор a_horse_with_no_name, джерело
@eis: але оригінальна формула використовує log10 (хоча я не знаю, що це правильно).
додано Автор a_horse_with_no_name, джерело
@eis: але оригінальна формула використовує log10 (хоча я не знаю, що це правильно).
додано Автор a_horse_with_no_name, джерело
Ви можете використовувати або Math.log10 (x), оскільки @a_horse_with_no_name говорить, або Math.log (x) /Math.log (10), як ви це робите, що еквівалентно. Я не бачу жодного значення в останньому, оскільки перше доступне, і ближче до того, що говорить ваша специфікація.
додано Автор EJP, джерело
Ви можете використовувати або Math.log10 (x), оскільки @a_horse_with_no_name говорить, або Math.log (x) /Math.log (10), як ви це робите, що еквівалентно. Я не бачу жодного значення в останньому, оскільки перше доступне, і ближче до того, що говорить ваша специфікація.
додано Автор EJP, джерело
@a_horse_with_no_name не вплине на результат
додано Автор eis, джерело
@a_horse_with_no_name не вплине на результат
додано Автор eis, джерело

6 Відповіді

Ви неправильно написали його для кодування. Спробуйте з:

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);
    }
}

Відмінність полягає в тому, що це не має 1.0324 - 0.19077 - оригінальної формули також не було, тому у вас була неправильна дужка.

Як зазначено в @a_horse_with_no_name, Math.log() буде використовувати логарифм на основі e, а не на основі 10, але в межах цього коду результат той самий. Для використання на основі 10 потрібно використовувати Math.log10 ().

6
додано

Ви неправильно написали його для кодування. Спробуйте з:

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);
    }
}

Відмінність полягає в тому, що це не має 1.0324 - 0.19077 - оригінальної формули також не було, тому у вас була неправильна дужка.

Як зазначено в @a_horse_with_no_name, Math.log() буде використовувати логарифм на основі e, а не на основі 10, але в межах цього коду результат той самий. Для використання на основі 10 потрібно використовувати Math.log10 ().

6
додано

Розрахунок журналу правильний, але ви неправильно вставили певні дужки.

double fat = 495/( 1.0324 - 0.19077* (Math.log(waist - neck)/Math.log(10)) + (0.15456) *  (Math.log(height)/Math.log(10))) - 450
2
додано

Розрахунок журналу правильний, але ви неправильно вставили певні дужки.

double fat = 495/( 1.0324 - 0.19077* (Math.log(waist - neck)/Math.log(10)) + (0.15456) *  (Math.log(height)/Math.log(10))) - 450
2
додано
495/(1.0324 - 0.19077 x

і це

495/( (1.0324 - 0.19077)*

не підходить

1
додано
495/(1.0324 - 0.19077 x

і це

495/( (1.0324 - 0.19077)*

не підходить

1
додано
ІТ КПІ - Java
ІТ КПІ - Java
436 учасників