Android-Float-点后始终为00

时间:2018-11-26 12:07:04

标签: java android

我想在textview中显示平均值。 但是,输出始终是整数。 例如,我的输入num1是2和3。输出是2.00。 输入:2和7,输出为4.00。

这是我的代码。

    <string name="ave">Average: %1$.02f</string> //in strings.xml        

    //in main function
    int num1 = Integer.parseInt(number1.getText().toString());
    int num2 = Integer.parseInt(number2.getText().toString());

    //get the average number
    float average = ( num1 + num2 ) / 2;
    ave_num.setText(getString(R.string.ave, average));

4 个答案:

答案 0 :(得分:1)

此作业的右侧:

float average = (num1 + num2) / 2;

仅由整数组成。
因此,加法后,除法将给出整数除法的结果。
这就是编译器对待整数之间的数学运算的方式。
当然,您希望结果为float
这样做:

float average = 1.0f * ( num1 + num2 ) / 2;

通过与1.0f(后缀f表示float)相乘,您将获得所需的float结果。
或者:

float average = ( num1 + num2 ) / 2f;

答案 1 :(得分:0)

使用DecimalFormat

  float average = ( num1 + num2 ) / 2;
  DecimalFormat df = new DecimalFormat();
  df.setMaximumFractionDigits(2);

  System.out.println(df.format(average ));

或String.format

  String average=String.format("%.02f", average )

答案 2 :(得分:0)

我已经测试了这段代码:

float average = ( num1 + num2 ) / 2f;

答案 3 :(得分:-1)

double roundTwoDecimals(double d)
{
    DecimalFormat twoDForm = new DecimalFormat("#.##");
    return Double.valueOf(twoDForm.format(d));
}

String.format("Value of a: %.2f", a) // for 2 decimal number ex. 1.03

String.format("Value of a: %.3f", a) // for 3 decimal number ex. 1.003

String.format("Value of a: %02d", a) // for 2 didgit ex. 01