我目前正在开发适用于Android的应用。在这个应用程序中,我需要将计算的数字转换为百分比。原始数字(tipTotal)是正确计算的,但是当我尝试通过除以100(tipPercentage)转换为十进制时,tipPercentage始终为0.0。
我已经确认tipTotal是正确的,也是我所期望的。
public void onClick(View view) {
int tipTotal = 0;
float totalBill = 0;
float tipPercentage = 0;
String time, attitude, refills, clearing, accuracy, bill;
time = timeSpinner.getSelectedItem().toString();
attitude = attitudeSpinner.getSelectedItem().toString();
refills = refillsSpinner.getSelectedItem().toString();
clearing = clearingSpinner.getSelectedItem().toString();
accuracy = accuracySpinner.getSelectedItem().toString();
bill = txtBill.getText().toString();
tipTotal = Integer.parseInt(time)+Integer.parseInt(attitude)+Integer.parseInt(refills)+Integer.parseInt(clearing)+Integer.parseInt(accuracy);
tipPercentage = tipTotal / 100;
Context context = getApplicationContext();
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, String.valueOf(tipPercentage), duration);
toast.show();
}
感谢您的帮助!
答案 0 :(得分:4)
试试这个:
tipPercentage = ((float)tipTotal)/ 100f;
问题可能是tipTotal / 100
正在进行整数除法...它没有小数部分,并且小于1.这就是整数除法的工作方式......例如:10/6 = 1
。另一方面10f/6f=1.6666
。
答案 1 :(得分:0)
我将第二个克里斯蒂安的答复,几乎可以肯定是因为tipTotal / 100
是一个整数除法,在你的情况下似乎正在返回int 0
,然后输入float 0.0
< / p>
因此,解决这个问题的一种方法是采取克里斯蒂安的建议并强行划分两个花车。
另一种选择是将tipTotal
声明为float tipTotal = 0;
,在这种情况下,除非100
将自动提升为浮动,否则该部门将按照您的预期进行。
编辑:为了更好地理解,请查看http://mindprod.com/jgloss/division.html