1

我正在尝试制作 BMI 应用程序。当我运行应用程序时,BMI 值以我不理解的数字形式显示。我尝试过 Float 和 Double 类型,但结果是一样的。

例如: 身高(米):2 体重(公斤):100 BMI 显示为:2.0E-4 而不是 25

影响这一点的代码部分是:

        String  editText1= height_field.getText().toString();
        String  editText2= weight_field.getText().toString();   
        try {  // Parse string to int
           double height = Double.parseDouble(editText1);
           double weight = Double.parseDouble(editText2);
           double bmi_result = (weight/(height*height));
           String bmi_text = Double.toString(bmi_result);
           display.setText(bmi_text);
         System.out.println("OnClick: computeButton is clicked");
       }
       catch(NumberFormatException nfe) {
           alert.show();   // Show error alert
4

1 回答 1

2

要回答您的原始问题,您应该使用java.text.DecimalFormat,例如:

 DecimalFormat formatter = new DecimalFormat("##.##");
 display.setText(formatter.format(bmi_result));

将强制结果采用两位数后跟两位小数的格式,上面链接中的表格显示了如何生成它。

但是,由于 2.0E-4 是 0.0002,我认为 Jon Skeet 的评论是正确的:你做错了数学运算,因为你打印的值是 25 的一小部分:)

我建议Log.v()您在实际执行之前使用它来打印出您的数学运算,这样您就可以看到值weightheight实际值是什么,我非常怀疑它们是否正确设置为您在问题中描述的值。

于 2013-09-24T21:38:08.120 回答