Java'da logaritmaları nasıl hesaplarsınız?

Aşağıdaki formül

Yağ yüzdesi = 495/(1.0324 - 0.19077 x (LOG10 (bel - boyun)) + 0.15456 x (LOG10 (yükseklik))) - 450

Aşağıdaki kodum

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

Aldığım cevap yanlış. % 11,8 olmalıdır (Aşağıdaki http://lowcarbdiets.about.com/library/blbodyfatcalculator kullanın. htm )

Logaritmalarda yanlış bir şey yaptığımı düşünüyorum. Lütfen doğru cevabı almak için bana yardım edin.

3
Bu bile yanlış görünüyor: (1.0324 - 0.19077 x (LOG10 (bel - boyun))! = ((1.0324 - 0.19077) * (Math.log (bel - boyun) /Math.log (10)), siz "çarpma" çarpma Orijinal formülden öncelikli.
katma yazar PeterMmm, kaynak
Bu bile yanlış görünüyor: (1.0324 - 0.19077 x (LOG10 (bel - boyun))! = ((1.0324 - 0.19077) * (Math.log (bel - boyun) /Math.log (10)), siz "çarpma" çarpma Orijinal formülden öncelikli.
katma yazar PeterMmm, kaynak
Javadocları kontrol et. Math.log10() 'ı kullanmanız gerekir. Math.log() , e temel alınarak logaritmayı döndürür
katma yazar a_horse_with_no_name, kaynak
@eis: ama orijinal formül log10'u kullanır (bunun doğru olup olmadığını bilmeme rağmen).
katma yazar a_horse_with_no_name, kaynak
@eis: ama orijinal formül log10'u kullanır (bunun doğru olup olmadığını bilmeme rağmen).
katma yazar a_horse_with_no_name, kaynak
<�İ> ya Math.log10 (x) 'ı kullanabilirsiniz, @a_horse_with_no_name diyor ki, veya Math.log (x) /Math.log (10), yaptığınız gibi, Bu eşdeğerdir. İkincisinde, eskiden olduğu gibi herhangi bir değer görmüyorum ve şartnamesinin söylediklerine daha yakın.
katma yazar EJP, kaynak
<�İ> ya Math.log10 (x) 'ı kullanabilirsiniz, @a_horse_with_no_name diyor ki, veya Math.log (x) /Math.log (10), yaptığınız gibi, Bu eşdeğerdir. İkincisinde, eskiden olduğu gibi herhangi bir değer görmüyorum ve şartnamesinin söylediklerine daha yakın.
katma yazar EJP, kaynak
@a_horse_with_no_name, sonucu etkilemez
katma yazar eis, kaynak
@a_horse_with_no_name, sonucu etkilemez
katma yazar eis, kaynak

6 cevap

Kodu yanlış yazmışsın. İle deneyin:

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

Fark, bunun 1.0324 - 0.19077 içermemesidir - orijinal formülün sahip olmaması, dolayısıyla parantezin yanlış yerleştirilmiş olması.

@A_horse_with_no_name tarafından belirtildiği gibi, Math.log() 10 tabanlı değil, e-tabanlı logaritma kullanacaktır, ancak bu kod kapsamında sonuç aynıdır. 10 tabanlı kullanmak için Math.log10() kullanırsınız.

6
katma

Kodu yanlış yazmışsın. İle deneyin:

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

Fark, bunun 1.0324 - 0.19077 içermemesidir - orijinal formülün sahip olmaması, dolayısıyla parantezin yanlış yerleştirilmiş olması.

@A_horse_with_no_name tarafından belirtildiği gibi, Math.log() 10 tabanlı değil, e-tabanlı logaritma kullanacaktır, ancak bu kod kapsamında sonuç aynıdır. 10 tabanlı kullanmak için Math.log10() kullanırsınız.

6
katma

Günlük hesaplaması doğru, ancak bazı parantezleri yanlış yerleştirdiniz.

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

Günlük hesaplaması doğru, ancak bazı parantezleri yanlış yerleştirdiniz.

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

ve bu

495/( (1.0324 - 0.19077)*

eşleşmiyor

1
katma
495/(1.0324 - 0.19077 x

ve bu

495/( (1.0324 - 0.19077)*

eşleşmiyor

1
katma