我想在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));
答案 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