我不能正确划分两个数字

int percent = (score/numberOfQuestions)*100; progressText.setText(score+"/"+numberOfQuestions+" "+percent+"%"); 

无论我累了什么,都会返回0%。 我试着将它转换为int,double,float

为什么它会返回0%的数字,如score = 5 numberOfQuestions = 8?

Solutions Collecting From Web of "我不能正确划分两个数字"

问题是分两个整数给你的结果的整数部分。 所以(score/numberOfQuestions)总是0。
你应该做的是

 int percent = (score * 100 / numberOfQuestions); 

那么*100会先执行,然后分割会给你正确的结果。

你需要施放其中任何一个:

 float percent = ((float)score/numberOfQuestions)*100; 

因为5/10已经是0了。将最终结果转换为任何types只会给你0,如下面的代码所示:

 float percent = ((float)(score/numberOfQuestions))*100; 

这也会给你0.0 。 既然你正在铸造0浮动。 没关系..

检查你的整数math。 你的代码将不会工作,而不是铸造小的值,所以只要移动操作:

 int percent = 100*score/numberOfQuestions; 

您正在使用int (整数)来存储该百分比。 尝试使用floatdouble而不是使问题的分数和数量floatdouble (感谢您的意见,我完全跳过了这个…)。 如果您有问题显示值,我build议您使用DecimalFormat格式化它。

而不是使用纯粹的intmath来计算和存储的百分比,我build议这个其他的替代品,如果你想在你的结果小数。

score/numberOfQuestions将始终提供一个介于0和1之间的数字。根据您需要计算的准确度,您有两个select。 对于大多数情况,您可以将expression式更改为(score * 100)/numberOfQUestions 。 这会给你两个数字的准确性。 如果score * 100溢出一个int就会出现问题。 鉴于你的variables名,我怀疑这种情况会发生在这种情况下。 第二种可能性是将expression式转换为计算的两倍。

 int percent=(int)(((double)score/numberOfQuestions)*100);