在我的计算系统中的问题是,双精度的输出分数总是显示0,像77.3在我的计算结果,但在程序输出中显示77.0
这是我的程序代码
public void avgcal()
{
double avg = .0,tot,wg1,wg2,wg3,wg4,dq1,dq2,dq3,dq4,st1,st2,st3,st4,intot1,intot2,intot3,intot4;
DecimalFormat precision = new DecimalFormat(".2");
//Subject grades calculator
wg1 = Double.parseDouble(ed2.getText().toString());
dq1 = Double.parseDouble(ed3.getText().toString());
st1 = Double.parseDouble(ed4.getText().toString());
wg2 = Double.parseDouble(ed8.getText().toString());
dq2 = Double.parseDouble(ed9.getText().toString());
st2 = Double.parseDouble(ed10.getText().toString());
wg3 = Double.parseDouble(ed11.getText().toString());
dq3 = Double.parseDouble(ed12.getText().toString());
st3 = Double.parseDouble(ed13.getText().toString());
wg4 = Double.parseDouble(ed19.getText().toString());
dq4 = Double.parseDouble(ed20.getText().toString());
st4 = Double.parseDouble(ed21.getText().toString());
intot1 = st1 / dq1 * wg1;
intot2 = st2 / dq2 * wg2;
intot3 = st3 / dq3 * wg3;
intot4 = st4 / dq4 * wg4;
//SUM OF ALL DATA
tot = intot1 + intot2 + intot3 + intot4;
ed5.setText(precision.format(tot));
}
}
1条答案
按热度按时间rsaldnfx1#
问题出在precision.format(tot)行。DecimalFormat对象已初始化为格式“.2”,这意味着它将数字格式化为两位小数。然而,在ed5.setText(precision.format(tot))行中;,格式化的数字被分配给TextView,该TextView可能具有不同的格式,或者可能将数字舍入到小数点后零位。
要解决这个问题,可以尝试使用String.format方法将数字格式化为两位小数,然后将其作为字符串设置到TextView。
下面是更新后的代码:
public void avgcal(){ double avg = .0,tot,wg1,wg2,wg3,wg4,dq1,dq2,dq3,dq4,st1,st2,st3,st4,intot1,intot2,intot3,intot4;
}
此代码应将数字格式设置为两位小数,并将其设置为TextView。