Math.log10没有显示正确的结果

时间:2016-02-03 23:05:10

标签: java math

我正在尝试在我的应用中实现此公式:

Body Fat (men) = 495 / (1.29579 - .35004 * log10(Waist - Neck) + 0.22100 * log10(Height)) - 450
像这样:

rezultat = (495 / (1.29579 - .35004 * (Math.log10(trecePolje - petoPolje)) + 0.22100 * (Math.log10(drugoPolje / 2.54))) - 450);

在Java文件trecePolje中,drugoPolje和trecePolje被初始化:

double drugoPolje = Double.parseDouble(editVisina.getText().toString());

double trecePolje = Double.parseDouble(editStruk.getText().toString());

double petoPolje = Double.parseDouble(editVrat.getText().toString());

使用drugoPolje 190,trecePolje 80和petoPolje 30的值在我的应用程序的EditText中输出它输出-272.96 它应该输出16.8

任何想法有什么不对?

这是计算器:http://bmi-calories.com/body-fat-percentage-calculator.html 确保切换到METRIC单位! 下面你可以看到男性的原始配方,没有拼写错误。

在该部位的计算中,我使用100表示​​体重,190表示身高,80表示腰部,90表示臀部,30表示颈部,18表示年龄。所有这些当然都是cm,因为它是公制的。 它显示了16.8的结果

现在我在我的应用程序中使用相同的测量来做同样的事情,其中​​trecePolje是waise,petoPolje是nech而drugoPolje是高度。 结果甚至都没有结果。结果只能是负面的!

2 个答案:

答案 0 :(得分:3)

Your log10 in the formula has 3 values (x+y-z). In code it has 2 (x-z).

Also, on 1 value (height) you're doing a cm->in conversion. Do you need to on the others as well?

Third problem: in the formula you have .221*log10(height), in code you have .221+log10(height).

答案 1 :(得分:1)

好的,答案是这样的: 整个配方需要针对公制单位进行调整,而不仅仅是身高,腰围和颈围。

这是修改后的公式:

Male Metric Body Fat % = 495/(1.0324-0.19077(log(waist-neck))+0.15456(log(height)))-450