如何在Android中以有意义的形式显示Float / Double

时间:2013-09-24 21:29:01

标签: android floating-point double

我正在尝试制作BMI应用程序。当我运行应用程序时,BMI值以数字形式显示,我不明白。我尝试过浮动和双重类型,但结果相同。

例如: 高度(m):2 重量(Kg):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

1 个答案:

答案 0 :(得分: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的实际值是什么,I非常怀疑他们是否正确地设置了你在问题中所描述的内容。